読者です 読者をやめる 読者になる 読者になる

はてブロ@ama-ch

https://twitter.com/ama_ch

Growlで監視プロセスを通知してみよう

Mac Shell

最近DropBoxのアプリケーションが頻繁に落ちてて、同期が実行されないことが多いんです><
プロセス監視して、DropBoxが落ちてたらコマンドから起動しようと思ったら

% open -a Dropbox

これがうまく動かない>< あ、openはMac OS X固有のアプリケーションを起動するコマンドです。
なぜか起動したと思ったらすぐ落ちちゃうんだよなー。どうしよー。
コマンドからDropBoxを起動できないなら、落ちた時に通知をするしかなさそう・・・って通知の方法がわからん\(^o^)/


思いついた順に、

  • アラートを鳴らす ← そんなコマンドあるのか知らない
  • AppleScriptでどうにかする ← めんどくさい
  • ログに吐いてtailする ← 自分でログ見ないと気付かない
  • メールを送る ← 分からないしめんどくさそう
  • Growlする ← これだ!!!!


マカーにはおなじみのGrowlですが、実はこれコマンドからGrowl通知できるツールが付属してるんですよね。ダウンロードパッケージのExtras/growlnotifyってやつがそれです。

% cd /Volumes/Growl-1.1.4/Extras/growlnotify
% ./install.sh

install.shを実行するだけで/usr/local/binにインストールしてくれます。

% /usr/local/bin/growlnotify -t 'test' -m 'this is a test.'

こんな風にコマンドを叩くだけでGrowlが通知してくれます!
なぜかgrowlnotifyだけだとうまく動かなかったので、絶対パスで書いてます><*1
23:50追記 PATH設定し直したりターミナル再起動したりしたら直りました。


ではこのgrowlnotifyを使ってDropBoxを監視してみましょう。

  1. 定期的にDropBoxプロセスを監視
  2. DropBoxプロセスが落ちていたら、Growlで通知

こんな手順で行います。

% ps -ax |grep Dropbox.app |grep -v grep |wc -l
       1
%

これでDropbox.appが起動していれば1を、起動していなければ0を返します。
このコマンドをcronで毎分走らせて、0が返ったらGrowl通知してあげればDropBoxが落ちてもすぐ気づけるという寸法!
crontabにこんな風に書きました。

13:38 ama-ch% crontab -l                                                                                                                 [/Volumes/Growl-1.1.4/Extras/growlnotify]
# +------------ 分 (0 - 59)
# | +---------- 時 (0 - 23)
# | | +-------- 日 (1 - 31)
# | | | +------ 月 (1 - 12)
# | | | | +---- 曜日 (0 - 6) (日曜日=0)
# | | | | |
# * * * * * 実行されるコマンド

# DropBoxアプリケーションを監視
*  *  *  *  * if [ $(ps -ax |grep Dropbox.app |grep -v grep |wc -l) -eq 0 ]; then /usr/local/bin/growlnotify -t 'Warning' -m 'DropBox is dead!!' -I /Applications/Dropbox.app; fi

13:38 ama-ch%


Dropbox.appが起動していないと、毎分こんな通知が出るようになります。

うぜーw
けどこれでDropBoxが落ちたら気づけるので一安心!起動まで自動化できなかったのが気になるけど><

*1:/usr/local/binにパスは通ってるんだけどなんでだろー