隐式杀死连接到前台进程的后台进程

时间:2015-07-23 17:33:09

标签: bash shell unix background-process kill

在Bash中,我启动了一些在后台运行的进程,并让Bash在前台等待:

sleep 7 & sleep 10 & wait

(这实际上是npm script所做的简化,这就是这个问题的应用。)

然后,每当我Ctrl+C进出wait进程时,我都希望所有后台进程都被终止。

这有可能吗?怎么样?

1 个答案:

答案 0 :(得分:2)

后台进程是shell的子进程,但不是wait的子进程,因此没有好的方法将信号传播到wait到任何其他进程。

一种快速而又脏的方法来杀死所有可以放入脚本或别名的后台进程,

<击> kill -INT $(jobs -l | awk '{print $2}')

kill -INT $(jobs -p)