2015-11-03 68 views
3

我有一个bash脚本,它运行一些SSH命令。如果我Ctrl-C bash脚本死了,但ssh会话(及其运行命令)继续运行。在死掉我的bash shell之前,我如何有效地将Ctrl-C发送到ssh会话?在bash脚本中的ssh中捕获Ctrl-C

+0

不是一个完整的答案,而是在'trap' bash内建中读到 - http://linux.die.net/man/1/bash --'ctrl-c'通常会产生'SIGINT'。 –

+0

要添加到Rob Starling的评论中,您可能想要杀死整个流程组(您可以轻松找到如何解决这个古老的问题)。 – 4ae1e1

回答

-1

你可以写这样的事情:

trap ctrl_c INT 

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

这可能会导致更多的SSH进程被杀死。 – ceving

+0

是的,它不是最终的解决方案。他必须修改它以满足他的需要...... – Joda

0

这个陷阱时,按Ctrl-C将发送SIGTERM到进程组中的所有过程:

trap 'kill 0' INT 

值得一提的是,SSH可能会让作业在其他系统上运行,并且您可以在远程命令中使用陷阱来处理这些问题。