如果 ssh 连接被终止,我该如何让通过 ssh 发送的命令消失?

如果 ssh 连接被终止,我该如何让通过 ssh 发送的命令消失?

使用 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并终止进程?

相关内容