"ps -p"와 동일

"ps -p"와 동일

제가 사용하고 있는 마더보드에는 ps전체 명령이 설치되어 있지 않습니다. 내가 필요한 것은 ps -p이에 상응하는 것입니다( $?특정 PID가 발견되는지 여부를 설정하는 것).

top과 같은 다른 명령을 사용하여 이를 수행할 수 있는 방법이 있습니까?

## wannabe_watchdog.sh

MY_EXE="$1"
_pid=-1

while test 1 -eq 1 
do
## this ps -p isn't available on the busybox
ps -p ${_pid}
if test $? -eq 0
then
    echo "executing"
    sleep 10
else
    echo "not executing"
    ./${MY_EXE} &
    sleep 1 
    agent_pid=$(cat /var/run/my_pidfile.pid)
    
    echo "waiting for ${_pid}"
    #wait function sometimes isn't blocking (and I never figured out exactly when)
    wait ${_pid}
    echo "${_pid} is dead - restarting"
fi

done

답변1

주어진 pid를 가진 프로세스가 존재하는지 확인하는 고전적인 방법은 다음과 같습니다.보내 "신호" 0:

kill -0 "${_pid}"

프로세스가 존재하면 코드 0으로 종료되고, 그렇지 않으면 코드 1로 종료되며 실행 중인 프로세스에 어떤 방식으로도 영향을 주지 않습니다.

프로세스 kill에는 대상 프로세스에 신호를 보낼 수 있는 충분한 권한이 있어야 합니다(대상 프로세스(또는 루트 또는 이에 상응하는 권한)와 동일한 사용자가 실행합니다.

관련 정보