我试图使用命令行中的ssh
使用以下命令在远程服务器上启动python服务器:
$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
-o ConnectTimeout=5 -f -i mykey.pem [email protected] \
'python -m SimpleHTTPServer 3000 & echo $! > /home/user/pysrv.pid'
启动后,我的ssh
会话进入后台,但在python服务器运行之前不会退出。有没有办法设置命令,以便ssh不会作为当前机器上的后台进程?
你可以做
nohup python -m SimpleHTTPServer 3000 & echo $! > /home/user/pysrv.pid &
它将创建一个不需要父(ssh)的分离任务。
OTOH,如果你杀了ssh服务器进程,你将无法再次连接。这是你想要的,还是你只想杀死会话?如果它只是会话,它会在连接断开后自行消失。
当TCP连接关闭时,ssh
命令退出。如果重定向远程命令的stdin
和stderr
,则不会将任何内容连接到TCP连接,它将关闭。
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 -f -i mykey.pem [email protected] 'python -m SimpleHTTPServer 3000 2>/dev/null 2>&1 </dev/null& echo $! > /home/user/pysrv.pid'