我正在尝试通过以下命令从命令行使用ssh
在远程服务器上启动python服务器:
$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
-o ConnectTimeout=5 -f -i mykey.pem user@99.99.99.99 \
'python -m SimpleHTTPServer 3000 & echo $! > /home/user/pysrv.pid'
启动后,我的ssh
会话进入后台,但是直到python服务器运行后才退出。有什么方法可以设置命令,以使ssh不会在当前计算机上作为后台进程出现?
答案 0 :(得分:0)
您可以
nohup python -m SimpleHTTPServer 3000 & echo $! > /home/user/pysrv.pid &
它将创建不需要父级(ssh)的独立任务。
OTOH,如果您取消了ssh服务器进程,将无法再次连接。这是您想要的吗,还是您只是想终止会话?如果只是会话,则在断开连接后应该自动消失。
答案 1 :(得分:0)
关闭TCP连接后,ssh
命令退出。如果您重定向远程命令的stdin
和stderr
,则TCP连接将不会连接任何东西,并且它将关闭。
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 -f -i mykey.pem user@99.99.99.99 'python -m SimpleHTTPServer 3000 2>/dev/null 2>&1 </dev/null& echo $! > /home/user/pysrv.pid'