![如果 ssh 连接被终止,我该如何让通过 ssh 发送的命令消失?](https://linux22.com/image/508153/%E5%A6%82%E6%9E%9C%20ssh%20%E8%BF%9E%E6%8E%A5%E8%A2%AB%E7%BB%88%E6%AD%A2%EF%BC%8C%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E8%AE%A9%E9%80%9A%E8%BF%87%20ssh%20%E5%8F%91%E9%80%81%E7%9A%84%E5%91%BD%E4%BB%A4%E6%B6%88%E5%A4%B1%EF%BC%9F.png)
使用 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
并终止进程?