如何在linux命令中添加无用的随机字符串以便通过ps识别?

如何在linux命令中添加无用的随机字符串以便通过ps识别?

我正在编写一个 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 网页,需要启动一个长时间运行的进程(如守护进程),这将很有用。

相关内容