【发布时间】:2019-07-04 05:03:21
【问题描述】:
我创建了几个 PHP (CLI) 服务。以最佳方式从另一个进程获取他们的 PID。
但是,我找不到最佳解决方案..
【问题讨论】:
-
你的意思是像getmypid()这样的东西吗?
-
@ÁlvaroGonzález 问题说明“来自另一个进程”。
标签: php linux command-line-interface pid
我创建了几个 PHP (CLI) 服务。以最佳方式从另一个进程获取他们的 PID。
但是,我找不到最佳解决方案..
【问题讨论】:
标签: php linux command-line-interface pid
不要将grep 输出为ps。相反,请使用pgrep。如果您只有一个 PHP 进程在运行,您可以通过进程名称找到这些进程,如下所示:
pgrep php;
它会返回类似49282的东西。
但是,由于您声明有几个正在运行,您可以使用 pgrep --full 区分它们。例如,如果您正在运行 2 个命令,php foo.php 和 php bar.php,并且您想要运行 foo.php 的进程的 PID:
pgrep --full '^php foo\.php$'
虽然^ 和$ 可能并非在所有情况下都是必需的,但它们可以防止误报匹配。有关正则表达式的更多信息,请参阅this grep-specific documentation。
【讨论】:
如果我没记错的话,下面的代码会为你工作。
ps aux | grep php
【讨论】:
grep php 更改为grep p[h]p。所以命令找不到自己。
最好的方法是在创建子进程后记住 PID。分析完整过程列表的所有变体都可能导致错误的肯定。
另一种解决方案是,查找/记住进程,谁启动了子进程并搜索子进程。
无论如何,您给我们提供的细节更少,以帮助更具体。
【讨论】: