정확한 프로그램의 PID를 시작하는 방법

정확한 프로그램의 PID를 시작하는 방법

그래서 프로그램 A와 프로그램 B라는 여러 Python 프로그램이 있습니다. "pgrep python"을 사용하여 pid를 얻으면 프로그램 A와 프로그램 B의 pid가 제공됩니다. 그러나 저는 프로그램 B의 pid를 찾아야 하지만 프로그램 A의 pid는 찾지 않는 프로그램을 작성하고 있습니다. 내 계획은 프로그램이 "pgrep" 콘솔 명령을 실행하여 pid를 가져오도록 하는 것입니다. 그러나 두 PID를 모두 가져오고 두 PID의 차이점을 알 수 없기 때문에 (내가 알고 있는)

그렇다면 프로그램 A가 아닌 프로그램 B의 pid를 얻으려면 어떻게 해야 합니까?

답변1

한 가지 옵션은 프로그램 B를 시작한 프로세스가 이 작업을 수행한 후 PID를 검색하여 어딘가에 파일에 저장할 수 있다는 것입니다(예: /var/run/이러한 파일은 일반적으로 포함됨 X.pid). 한 가지 방법은 스크립트에서 백그라운드로 프로그램 B를 시작한 다음 $!다음과 같이 셸 변수를 확인하는 것입니다.

ProgramB &
B_PID=$!

일반적으로 이 정책을 사용하면 X.pid파일이 오래될 수 있습니다. 즉, 시작된 프로세스는 X.pid파일이 삭제되지 않은 채 종료될 수 있으며 PID는 다른 프로세스에서 재활용될 수도 있습니다. 이 시간 동안 프로그램 B가 시작되지 않으면 파일이 X.pid업데이트되지 않으므로 파일에 저장된 PID를 가진 프로세스가 X.pid존재하는지, 해당 프로세스에 예상한 명령 이름이 있는지 확인해야 합니다.

또 다른 전략은 플랜 B가 시작되었을 때 보고된 주장을 조사하는 것입니다. 이 정보는 귀하가 이용 가능 ps하거나 pgrep귀하에게 제공될 수 있습니다. 댓글 작성자가 말했듯이 사용된 플래그 pgrep는 입니다 -f.

관련 정보