プログラム(非子)終了するのを待って、コマンドを実行します

マイケルO.:

私は停止すべきではないリモートコンピュータ上で実行中のプログラムを持っています。私はこのプログラムが停止されたときに追跡し、すぐにコマンドを実行する必要があります。PIDが知られています。どうやってやるの?

トーマス:

あなたはできませんwait非子プロセスのために

おそらく、シェルの中で最も効率的な方法は、終了コードを使用してポーリングすることであろうkill -0 <pid>プロセスがまだ存在するかどうかを確認します:

while kill -0 $PID 2>/dev/null; do sleep 1; done

これは単純で関わるすべてのアプローチよりも効率的でもあるpsgrepユーザーがそのプロセスにシグナルを送信する権限を持っている場合しかし、それだけで動作します。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=6806&siteId=1