php - 在 Linux 中的 PHP 脚本中终止所有相关进程

标签 php linux bash shell process

假设我有一个 PHP 脚本,

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

main.php 创建了许多其他进程,它们有自己的 pid,脚本可能不会记录/跟踪这些 pid,但 main.php 的 pid 是已知的。

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

脚本应该在 Linux 中运行。

谢谢

最佳答案

pkill -TERM -P 1002

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

杀死 child 的 child :

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

来自 Walking a process tree 的修改版本.

关于php - 在 Linux 中的 PHP 脚本中终止所有相关进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070717/

相关文章:

c++ - Emacs、cedet 和 c++/c++11 支持

php - 使用变量时进行计数

linux - 使用 sed 和 cut 命令复制行

linux - 如何在 Linux 上转义单引号

linux - 如何检查计划作业的进程ID或进程

windows - Crontab 不能在 Windows 上的 Ubuntu 上使用 Bash

arrays - 从 Bash 数组中删除元素时的不一致

php - 如何检查 URL 是否具有有效的公共(public) TLD?

php - Codeigniter 用户 session 错误

javascript - 如何使用javascript隐藏php中的div?