時間かかるプロセスが終わったときにGrowlで通知してくれるやつ
時間かかる処理(homebrewでなんかインストールしてるとかcpan-outdated | cpanm)してるときに、その処理が終わったタイミングでGrowl通知してくれるといいのになーって思うときがあるのでやっつけで書いた。10秒ごとにチェックしてるのでほんとのリアルタイムではないけど、自分用としてはこれで十分。
./watcher.pl 監視したいプロセスのpid &
みたいな感じで使う。
#!/usr/bin/env perl use strict; use warnings; use Proc::ProcessTable; use Mac::Growl; my $pid = shift or die "<usage> $0 pid"; die "bad pid" unless $pid !~ m/[^0-9]/; chomp $pid; while (1) { my $t = Proc::ProcessTable->new; my $found = 0; foreach (@{$t->table}) { $found++ if $_->pid == $pid; } last unless $found; sleep 10; } my $appname = "process watcher"; Mac::Growl::RegisterNotifications($appname, ['alert'], ['alert']); Mac::Growl::PostNotification( $appname, 'alert', $appname, "pid $pid done", 0, 0, undef, );