使用ssh启动远程进程并退出

时间:2018-09-07 20:04:46

标签: linux ubuntu ssh

我正在尝试通过以下命令从命令行使用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不会在当前计算机上作为后台进程出现?

2 个答案:

答案 0 :(得分:0)

您可以

nohup python -m SimpleHTTPServer 3000 & echo $! > /home/user/pysrv.pid &

它将创建不需要父级(ssh)的独立任务。

OTOH,如果您取消了ssh服务器进程,将无法再次连接。这是您想要的吗,还是您只是想终止会话?如果只是会话,则在断开连接后应该自动消失。

答案 1 :(得分:0)

关闭TCP连接后,ssh命令退出。如果您重定向远程命令的stdinstderr,则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'