我正在编写一个 PHP 脚本来启动和监视进程。我曾经ps <pid>
这样做过,但在极少数情况下,它不可靠,因为在我的进程实际结束后,同一 pid 正在运行一个不相关的进程。
所以我想在我的命令中添加一个随机字符串,以便我的 PHP 脚本可以确保它是它启动的进程。我有什么选择来做到这一点?
到目前为止我想出了这个:
"USELESS_VAR_0nQjdXR45P=\"{$cmdRandomString}\" | $cmd"
其中 $cmd 是我想要运行的实际命令。 $cmdRandomString 是我添加的随机字符串。但由于某种原因,ps aux
这里没有显示无用的变量。
是因为快完结了吗?
我还尝试添加一个虚拟命令选项,--xxxx=yyyy
但该命令会返回一个致命错误,因为不知道该选项。
有什么办法可以做到这一点吗?或者除了不可靠的pid之外还有其他可靠的方法来识别进程吗?
答案1
除了不可靠的pid之外,还有其他可靠的方法来识别进程吗?
可靠地做到这一点的方法是自己启动进程,并在它终止时捕获它,例如,您收到 unix 信号 SIGCHILD。 pid 将继续存在(处于称为“僵尸”的状态),直到您使用子死亡通知,例如waitpid()
。
在某些情况下,您需要将其委托给进程管理程序守护进程,例如systemd
。例如,您可以使用 来查询它systemctl status my-process.service
。如果您有一个 PHP 网页,需要启动一个长时间运行的进程(如守护进程),这将很有用。