PID が実行されている (つまり、存在し、ゾンビ化されていない) かどうかを確認したい。
から行うのは本当に簡単ですが/proc/$PID/stat
、もっとポータブルなものが欲しいです。
私が今持っている最高のものは次のとおりです。
( STAT="$(ps -ostat= -p$PID)"; test "$STAT" -a "$STAT" "!=" "Z" )
BSDおよびLinuxで動作するようです。より良い方法はありますか?
うまくいけばPOSIX準拠。ダッシュでテスト済み。使用するには、お気に入りのエディターで保存し、実行可能 ( chmod 755 foo.sh
) にして、PID 引数を指定して実行します。
もちろん、必要に応じて調整できます。
#!/bin/sh
pid="$1";
psout=$(ps -o s= -p "$pid");
pattern='[SRDTWX]';
case "$psout" in
$pattern) echo "Not a zombie";;
Z) echo "Zombie found";;
*) echo "Incorrect input";;
esac