여러 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
%