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

问题描述 投票:-1回答:2

我试图使用命令行中的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不会作为当前机器上的后台进程?

linux ubuntu ssh
2个回答
0
投票

你可以做

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

它将创建一个不需要父(ssh)的分离任务。

OTOH,如果你杀了ssh服务器进程,你将无法再次连接。这是你想要的,还是你只想杀死会话?如果它只是会话,它会在连接断开后自行消失。


0
投票

当TCP连接关闭时,ssh命令退出。如果重定向远程命令的stdinstderr,则不会将任何内容连接到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'
© www.soinside.com 2019 - 2024. All rights reserved.