使用 SSH 向远程服务器发送命令时,如果 SSH 连接中断,进程仍会继续运行。有没有办法让它在 SSH 连接结束时终止子进程?
例子:
root@local:~# ssh root@server sleep 100 &
[2] 15762
root@local:~# kill 15762
[2]+ Stopped ssh root@server sleep 100
运行上述命令后,sleep 命令仍在远程主机上运行。
有任何想法吗?
答案1
首先不要让它在后台运行。这样,当 ssh conn 终止时,该进程也会被终止。
答案2
jdizzle 的评论给了我一个想法:在脚本中运行命令并使用“trap”处理信号(http://gd.tuwien.ac.at/linuxcommand.org/wss0160.php)
可以吗?
欢呼吧,Eddy
答案3
通过 SSH 重新登录,运行 ps -ef | grepcommandname
并终止进程?