「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には、ターゲットプロセスにシグナルを送信するのに十分な権限が必要です(つまりターゲットプロセス(またはrootまたはそれに対応する権限)と同じユーザーが実行します。

関連情報