Growlで監視プロセスを通知してみよう
最近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を監視してみましょう。
こんな手順で行います。
% 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にパスは通ってるんだけどなんでだろー