はじめに
プロセスIDが特定できているが、このプロセスが終了したことを確認して次の処理を実行させたい場合にどうするのがよいでしょう?
プロセス終了を持って、Macの通知バーにメッセージを表示させたかったのですが、 while ループと sleep コマンドでプロセス終了を監視する以外にうまい方法がないかを調べてみました。
検証環境
| |
tailコマンドに便利なオプションがあった!
tail コマンドのマニュアルにぴったりなオプションがありました。
| |
該当のプロセスIDの処理が終了するまで tail -f を続けてくれるオプションになります。
ただし、今回は tail したいファイルはありませんので、ちょっとしたコツが必要です。
試してみる
まずはターミナルを開き、以下のようなファイルを作成します。
| |
実行します。1秒おきに . が出力されるはずです。
| |
別のターミナルを開き、以下のコマンドを実行します。
test.sh コマンドを実行中のプロセスのPIDが出力されます。
| |
プロセスIDがわかったので、このプロセスの終了を待ち、終了後に任意のコマンド(ここでは echo)を実行させてみます。
| |
監視対象のファイルはありませんが、 --pid オプション指定時には -f オプションが必須ということでビットバケツを指定しています。
さて、この状態でもとのターミナルに戻り、コマンドを終了させます。(Ctrl + C をタイプ)
監視中のターミナルで echo コマンドが実行されるはずです。
| |
ひとこと
echo の代わりに terminal-notifier を組み合わせると、息の長いコマンドを実行してしまったあとで、簡単に終了通知を設定することができます。