マイケルO.:
私は停止すべきではないリモートコンピュータ上で実行中のプログラムを持っています。私はこのプログラムが停止されたときに追跡し、すぐにコマンドを実行する必要があります。PIDが知られています。どうやってやるの?
トーマス:
あなたはできませんwait
非子プロセスのために。
おそらく、シェルの中で最も効率的な方法は、終了コードを使用してポーリングすることであろうkill -0 <pid>
プロセスがまだ存在するかどうかを確認します:
while kill -0 $PID 2>/dev/null; do sleep 1; done
これは単純で関わるすべてのアプローチよりも効率的でもあるps
とgrep
。ユーザーがそのプロセスにシグナルを送信する権限を持っている場合しかし、それだけで動作します。