在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)