Como adicionar uma string aleatória inútil em um comando do Linux para identificá-la via ps?

Como adicionar uma string aleatória inútil em um comando do Linux para identificá-la via ps?

Estou escrevendo um script PHP para iniciar e monitorar processos. Eu costumava ps <pid>fazer isso, mas em casos raros não é confiável, pois havia um processo irrelevante sendo executado pelo mesmo pid após o término do meu processo.

Então, eu queria adicionar uma string aleatória em meu comando para que meu script PHP pudesse ter certeza de que era o processo iniciado. Quais são minhas opções para fazer isso?

Até agora eu descobri isso:

"USELESS_VAR_0nQjdXR45P=\"{$cmdRandomString}\" | $cmd"

Onde $cmd é o comando real que eu queria executar. $cmdRandomString é a string aleatória que adicionei. Mas, por algum motivo, in ps auxnão está exibindo o var inútil aqui.

É porque terminou rapidamente?

Também tentei adicionar uma opção de comando fictícia, --xxxx=yyyymas o comando retornaria um erro fatal por não conhecer a opção.

Há alguma maneira de fazer isso? Ou existe alguma maneira confiável de identificar um processo diferente do pid não confiável?

Responder1

Existe alguma maneira confiável de identificar um processo diferente do pid não confiável?

A maneira de fazer isso de forma confiável é iniciar o processo você mesmo e capturar quando ele morre, por exemplo, você recebe o sinal unix SIGCHILD. O pid continuará a existir (em um estado chamado "zumbi") até que você consuma a notificação de morte infantil, por exemplo waitpid().

Em alguns casos, você precisaria delegar isso a um daemon supervisor de processo, por exemplo systemd. Por exemplo, então você poderia consultá-lo usando systemctl status my-process.service. Isso seria útil se você tivesse uma página web PHP, que precisasse iniciar um processo de longa duração como um daemon.

informação relacionada