在脚本中杀死pid树

时间:2017-03-21 04:31:46

标签: linux bash shell process pid

我有一个脚本可以加载一些程序,但在给定kill -15时拒绝退出,如果我使用kill -9,则所有子进程都会继续运行。

我试过了:

parent=$(pgrep -f ./start_server.sh)
children=$(pgrep -P $parent)
sudo kill -9 $children $parent &

这会杀死大部分的pids(2964 2976 2977 2978 2979)。问题在于,有时候其中一个孩子会有自己的孩子,而且还会继续运行(2976有10个等)。

当我说他们继续投放时我的意思是:kill -9 2964会导致2976 2977 2978 2979成为2738的孩子

此外,上面的代码会在kill命令返回(并将Killed打印到控制台)后立即退出脚本。我尝试通过添加&exec来运行它,但脚本仍会立即退出。

在一天结束时,我通过initd启动了这个./start_server.sh,当它崩溃时,由于这些孤立的进程,它无法正常重启。我想在开始时加上一条线来谋杀它产生的所有过程。

PID's Screenshot

0 个答案:

没有答案