ps를 통해 식별하기 위해 Linux 명령에 쓸모없는 임의 문자열을 추가하는 방법은 무엇입니까?

ps를 통해 식별하기 위해 Linux 명령에 쓸모없는 임의 문자열을 추가하는 방법은 무엇입니까?

프로세스를 시작하고 모니터링하기 위해 PHP 스크립트를 작성 중입니다. 나는 이 작업을 수행하곤 했지만 ps <pid>드문 경우지만 내 프로세스가 실제로 종료된 후 동일한 PID에 의해 실행되는 관련 없는 프로세스가 있었기 때문에 신뢰할 수 없습니다.

그래서 PHP 스크립트가 시작된 프로세스인지 확인할 수 있도록 명령에 임의의 문자열을 추가하고 싶었습니다. 이를 수행하기 위한 나의 옵션은 무엇입니까?

지금까지 나는 이것을 생각해 냈습니다.

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

여기서 $cmd는 내가 실행하려는 실제 명령입니다. $cmdRandomString은 내가 추가한 임의의 문자열입니다. 그러나 어떤 이유로 in은 ps aux여기에 쓸모없는 var를 표시하지 않습니다.

빨리 끝나서 그런가?

또한 다음과 같은 더미 명령 옵션을 추가하려고 시도했지만 --xxxx=yyyy해당 명령은 옵션을 알 수 없는 치명적인 오류를 반환했습니다.

이를 수행할 수 있는 방법이 있습니까? 아니면 신뢰할 수 없는 PID 외에 프로세스를 식별할 수 있는 신뢰할 수 있는 방법이 있습니까?

답변1

신뢰할 수 없는 PID 외에 프로세스를 식별할 수 있는 신뢰할 수 있는 방법이 있습니까?

이를 안정적으로 수행하는 방법은 프로세스를 직접 시작하고 프로세스가 종료될 때 이를 포착하는 것입니다. 예를 들어 유닉스 신호 SIGCHILD를 수신합니다. pid는 아동 사망 알림을 사용할 때까지 계속 존재합니다("좀비"라고 하는 상태) waitpid(). 예: .

어떤 경우에는 이를 프로세스 감독자 데몬(예: )에 위임해야 합니다 systemd. 예를 들어 다음을 사용하여 쿼리할 수 있습니다 systemctl status my-process.service. 이는 데몬과 같이 장기 실행 프로세스를 시작하는 데 필요한 PHP 웹 페이지가 있는 경우 유용합니다.

관련 정보