0

假设我有一个 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 中运行。

谢谢

4

1 回答 1

4
pkill -TERM -P 1002

pkill -P PID为您提供所有子进程,-TERMTERM信号发送给所有子进程。

杀死孩子的孩子:

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

修改后的版本来自遍历流程树

于 2012-06-17T10:50:37.910 回答