我正在编写一个 bash 脚本,它可以完成几件事。
一开始它会启动几个监视脚本,每个脚本都运行一些其他工具。
在我的主脚本结束时,我想杀死从我的外壳中产生的所有东西。
所以,它可能看起来像这样:
#!/bin/bash
some_monitor1.sh &
some_monitor2.sh &
some_monitor3.sh &
do_some_work
...
kill_subprocesses
问题是,大多数监视器都会生成自己的子进程,因此(例如):killall some_monitor1.sh
并不总是有帮助。
还有其他方法可以处理这种情况吗?
pkill -P $$
会适合(只是杀死自己的后代)
这是-P的帮助
-P, --parent ppid,...
Only match processes whose parent process ID is listed.
and $$
is the 脚本本身的进程ID http://tldp.org/LDP/abs/html/internalvariables.html#PROCCID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)