在Linux中的PHP脚本中杀死所有相关进程

时间:2012-06-17 10:45:16

标签: php linux bash shell process

说我有一个PHP脚本,

//main.php -> PID = 1002
<?php 
exec('ProcessOne');
exec('ProcessTwo');
//... many other exec calls
?>

main.php使用自己的pid创建许多其他进程,脚本可能无法记录/跟踪这些进程,但是main.php的pid是已知的。

我的问题是:如何通过仅知道main.php的pid(在我的示例中为1002)来杀死main.php(包括main.php)创建的所有进程?

该脚本应该在Linux中运行。

由于

1 个答案:

答案 0 :(得分:4)

pkill -TERM -P 1002

pkill -P PID为您提供所有子进程,-TERM向所有儿童发送TERM信号。

杀死孩子的孩子:

kill `pstree -p 1002 | sed 's/(/\n(/g' | grep '(' | sed 's/(\(.*\)).*/\1/' | tr "\n" " "`

Walking a process tree修改后的版本。