psで認識されるようにLinuxコマンドに無駄なランダムな文字列を追加するには?

psで認識されるようにLinuxコマンドに無駄なランダムな文字列を追加するには?

プロセスを開始して監視するために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 Webページがある場合に便利です。

関連情報