ps에서 인식되도록 Linux 명령에 쓸모없는 임의 문자열을 추가하는 방법은 무엇입니까?

ps에서 인식되도록 Linux 명령에 쓸모없는 임의 문자열을 추가하는 방법은 무엇입니까?

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

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

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

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

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

거의 끝나가기 때문일까요?

더미 명령 옵션도 추가해 보았는데, --xxxx=yyyy옵션을 알 수 없어 명령이 치명적인 오류를 반환합니다.

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

답변1

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

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

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

관련 정보