pgrep(또는 다른 도구)을 사용하여 동일한 이름을 가진 여러 프로세스 중 하나를 찾으려면 어떻게 해야 합니까? [폐쇄]

pgrep(또는 다른 도구)을 사용하여 동일한 이름을 가진 여러 프로세스 중 하나를 찾으려면 어떻게 해야 합니까? [폐쇄]

여러 bash 스크립트가 실행 중입니다. 그들 사이의 유일한 차이점은 pid입니다. 이런 대본을 쓰고 싶다이것특정 bash 프로세스만 모니터링하고 하위 프로세스는 제외합니다. 나는 보았다이것문제가 있지만 이 경우 프로세스 이름이 다르므로 정확한 정규식을 작성하면 됩니다.

현재 내가 한다면

% pgrep bash 
40583
47095
48133
49244

만약 내가한다면

% pgrep -P 47095
47099
50151

나는 다음과 같은 것을하고 싶다

% pgrep bash -P 47095

그런 다음 결과를 얻으십시오.

47095 # (i.e. no daughter processes)

47095가 더 이상 존재하지 않으면 null 값이 반환됩니다. 이것이 어떻게 달성될 수 있습니까? 대답은 pgrep을 기반으로 할 필요는 없습니다. 중요한 것은 프로세스가 실행 중이면 한 줄만 반환하고 그러한 프로세스가 없으면 아무것도 반환하지 않는다는 것입니다.

답변1

내 생각에 당신이 원하는 것은 PID 파일 처리입니다.pgrep, 사용하는 대신 -P:

-F, --pidfile file
   Read PIDs from file.  This option is more useful for pkill or pidwait than pgrep.

실행 중:

% sleep 100 &
[1] 26819
% echo 26819 > pid
% pgrep -F pid sleep
26819
% pgrep -F pid sleep -l
26819 sleep
% pgrep -F pid awake -l
%

관련 정보