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



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

sleep 7 & sleep 10 & wait

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

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

这可能吗?如何?

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

杀死所有后台进程的一种快速而肮脏的方法是

,你可以将其放入脚本或别名中。

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

kill -INT $(jobs -p)

最新更新