如何在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 網頁,需要啟動一個長時間運行的進程(如守護程式),這將很有用。

相關內容