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

2

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

Então, eu queria adicionar uma string aleatória no 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"

Em que $ cmd é o comando real que eu queria executar. $ cmdRandomString é a string aleatória que eu adicionei. Mas por algum motivo, em ps aux não está exibindo o var inutilizado aqui.

É porque terminou rapidamente?

Eu também tentei adicionar uma opção de comando fictícia como --xxxx=yyyy , mas o comando retornaria um erro fatal sem conhecer a opção.

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

    
por datasn.io 07.07.2017 / 13:46

1 resposta

1

Is there any reliable way to identify a process other than the unreliable pid?

A maneira de fazer isso de maneira confiável é iniciar o processo por conta própria e recuperar quando ele morrer. você recebe o sinal unix SIGCHILD. O pid continuará a existir (em um estado que é chamado de "zumbi") até que você consuma a notificação de morte de criança, p. waitpid() .

Em alguns casos, você precisaria delegar isso para um daemon de 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 da Web PHP, que precisasse iniciar um processo de execução longa como um daemon.

    
por 07.07.2017 / 14:59

Tags