1분기: 최근 원격 머신의 활성 프로세스를 모니터링하기 위해 일부 작업 스크립트가 machine-01에 배포되었습니다. 이 기능은 다음 cmd를 주기적으로 실행하여 수행됩니다.
ssh $ip "ps aux | grep $pattern " | grep -v 'grep' | wc -l
예상대로 작동하지만 때로는 잘못되기도 합니다. 이는 위 cmd의 결과가 "null"임을 의미합니다. 그런데 다음 cmd를 통해 결과를 확인합니다.
if [ "$nums" -lt 1 ]
2분기: 또한 이 작업 스크립트는 다른 하위 스크립트를 실행하기 위한 백그라운드 하위 프로세스를 생성하며 설계 번호는 60입니다. 예상한 대로 생성되었는지 확인하기 위해 'ps aux | grep xxx'를 실행하면 동일한 CMD에 대해 서로 다른 PID가 있는 몇 줄을 발견합니다. 이를 "유령 pid"라고 합니다. 이러한 "고스트 pid"가 이러한 백그라운드 하위 프로세스에 의해 생성된 하위 하위 프로세스인 경우 동일한 CMD를 갖는 이유는 무엇입니까?
이 두 가지 사실은 내가 아마도 'ps aux | grep xxx'를 잘 모른다는 것을 암시합니다. 누군가 나에게 몇 가지를 설명해 줄 수 있습니까?
=============================
ps aux | grep xxx를 pgrep으로 바꾼 후. "유령 pid"가 여전히 발생합니다. Q1을 다시 확인하여 해킹했습니다. 하지만 여전히 Q2를 고칠 수 없습니다. 그림-1은 내 시작 하위 프로세스 로그입니다. 그림 2는 하위 프로세스를 period pgrep할 때 얻은 결과입니다.