在Bash中,我启动了一些在后台运行的进程,并让Bash在前台等待:
sleep 7 & sleep 10 & wait
(这实际上是npm script
所做的简化,这就是这个问题的应用。)
然后,每当我Ctrl+C
进出wait
进程时,我都希望所有后台进程都被终止。
这有可能吗?怎么样?
答案 0 :(得分:2)
后台进程是shell的子进程,但不是wait
的子进程,因此没有好的方法将信号传播到wait
到任何其他进程。
一种快速而又脏的方法来杀死所有可以放入脚本或别名的后台进程,
<击> kill -INT $(jobs -l | awk '{print $2}')
击>
kill -INT $(jobs -p)