在bash脚本中ssh中捕获Ctrl-C信号

3

我有一个bash脚本,运行SSH并执行一些命令。如果我使用Ctrl-C终止bash脚本,但是ssh会话(及其正在运行的命令)仍然在运行。在终止bash shell之前,如何有效地将Ctrl-C发送到ssh会话?


请查看trap bash内置命令的相关文档 -- http://linux.die.net/man/1/bash -- Ctrl-c通常会生成SIGINT信号。 - Rob Starling
除了Rob Starling的评论之外,您可能希望终止整个进程组(您可以轻松找到解决这个古老问题的方法)。 - 4ae1e1
2个回答

1
这个陷阱在按下Ctrl-C时会向进程组中的所有进程发送SIGTERM信号:
trap 'kill 0' INT

值得注意的是,ssh可能会在其他系统上保留作业,并且您可以在远程命令中使用trap来处理这些作业。

-1
你可以写出类似这样的代码:
trap ctrl_c INT

function ctrl_c() {
        echo "Pressed CTRL-C -> KILL SSH"
        kill -SIGINT $(pgrep ssh)
}

这可能会杀死更多的SSH进程,就像您希望杀死的那样。 - ceving

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接