web-dev-qa-db-ja.com

バックグラウンドジョブが終了したかどうかを知る方法は?

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

Nohup do_something &

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

5
San

バックグラウンドジョブを実行したい場合は、他のことを行ってから、バックグラウンドジョブが終了するまで停止して待機します。

 Nohup do_something&
 pid = $!
 ...他のもの... 
待機$ pid 

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

 Nohup do_something&
 pid = $!
 ...その他のもの... 
 ps -p $ pid> /dev/null
 [$? == 1] &&エコー "それはなくなった、バディ!" 
7
Flup

あなたはチェックすることができます

ps -ef | grep 'do_something

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

あなたも走ることができます

ps -ef | grep 'your_user_name'

iDで実行中のすべてのアクティブなジョブを確認します。

0

start-stop-daemonをデーモンとして使用する場合は、/etc/init.d/do_somethingの例)を検索することもできます。

0
GHugo