杀死某一进程的所有子进程:
pkill -P
杀死当前进程的所有子进程:
pkill -P $$
如果要在脚本退出前杀死所有子进程,只需要:
trap "pkill -P $$" EXIT
但是有时候子进程又会fork出自己的子进程,如果要把这种后代进程也全部杀死,可以这样:
trap "kill -TERM -$$" EXIT
参考:
https://unix.stackexchange.com/questions/124127/kill-all-descendant-processes
Linux shell 如何捕获信号(trap命令)
Linux-shell向进程组发信号