小编Ger*_*anK的帖子

当 ssh 终止时杀死由 ssh 产生的进程

这是一个已经多次解决的问题,不仅在这里,而且在堆栈交换网络的其他站点中也是如此(例如,当我中断 ssh 本身时,如何使 ssh 杀死远程进程? )。但是,我无法让任何解决方案对我有用。

我正在通过 ssh 运行命令。每当我退出 ssh 时,我都希望命令也终止。此命令是一个名为 ktserver 的守护进程,它会无限期地运行,直到您按下 Ctrl-C。

我按如下方式运行它:ssh -t compute-0-1 ktserver实际上,当我按 Ctrl-C 时,该过程会正常结束并且 ssh 会话结束。

但是,如果我没有按 Ctrl-C,而是使用kill命令终止 ssh 进程(例如,发送 SIGINT 或 SIGHUP),该ktserver进程将保持活动状态。

我怎样才能使ktserver总是死亡独立于如何ssh被杀死?

编辑:如果,而不是ktserver我运行完全不同的东西,例如gedit,一切都像魅力一样(即 gedit 在连接终止时终止)。因此,过程本身可能有问题。例如,我认为它可能会忽略 SIGHUP 或 SIGINT。但是,当我运行kill -1 ktserveror 时kill -2 ktserver,进程会按预期终止。

EDIT2:正如 Mark Plotnick 指出的那样,该问题与 ssh 通道上没有通信流通这一事实有关。之后我通过运行ssh -t <host> read并终止 ssh 进程来确认。read还活着,还在踢。

ssh kill

24
推荐指数
2
解决办法
3万
查看次数

标签 统计

kill ×1

ssh ×1