バックグラウンドタスクが完了したかどうかはどうすればわかりますか?

バックグラウンドタスクが完了したかどうかはどうすればわかりますか?

以下のように、別のスクリプト(do_manythings)を介してバックグラウンドでスクリプト(do_something)を呼び出しています。

nohup do_something &

呼び出された操作(do_something)が完了したことを親スクリプト(do_manythings)でどのように知ることができますか?

答え1

バックグラウンドジョブを開始し、他のアクションを実行してから停止し、バックグラウンドジョブが完了するのを待つには、次のようにします。

いいえdo_something&
PID=$!
...もっとたくさん...
$ pidを待ってください

または、次のようにジョブが終了したかどうかをテストできます。

いいえdo_something&
PID=$!
...もっとたくさん...
ps -p $pid > /dev/null
[$? == 1]&&echo "すべて消えました!"

答え2

デーモンとして使用するには、参考start-stop-daemon資料で参照することもできます。/etc/init.d/do_something

答え3

確認できます

ps -ef | grep 'do_something

結果が表示されたら、スクリプトはまだ実行中です。

また、実行することができます

ps -ef | grep 'your_user_name'

あなたのIDで実行されているすべてのアクティブなタスクを確認してください。

関連情報