Macのスリープ復帰時に任意のスクリプトを実行する
polipoさんがスリープから復帰時に死ぬのでいちいち手動で再起動してたのが嫌になった
sleepwatcherの導入
- > sleepwatcherをlaunchdaemonに登録
って流れでなんとかしよう
sleepwatcher
スリープを監視してくれるデーモン
復帰時だけじゃなくてスリープ移行時にも任意のスクリプトを走らせることができるみたい
導入
インストールはhttp://www.bernhard-baehr.deとかから落としてやるのかな?
macportsとかhomebrewとかでやったほうが楽だと思う。というか僕はそうしましたのでソースからのビルドはよくわかりませn
基本的な文法はこういう雰囲気
$ /usr/local/sbin/sleepwatcher --verbose --sleep /path/to/your/sleepscript --wakeup /path/to/your/wakeupscript ...
(--
LaunchDaemonに登録
せっかくだからsleepwatcherの起動も自動化しよう
/System/Library/LaunchDaemonsにcdしてsleepwatcher.plistを作る(名前は別にどうでもいいんだけれど)
こんな感じ?
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>sleepwatcher</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/usr/local/sbin/sleepwatcher</string> <!-- ここはフルパス指定じゃないとダメみたい --> <string>--verbose</string> <string>--wakeup</string> <string>/etc/rc.local</string> <!-- 実行したいスクリプトのパス --> </array> <key>ServiceDescription</key> <string>sleepwatcher</string> <key>ServiceIPC</key> <false/> </dict> </plist>
できたら保存して
$ sudo launchctl load ./sleepwatcher.plist
しよう
launchctlがちゃんとsleepwatcher.plistをロードしたかどうかはroot権限でのlaunchctl listで確認できるよ
$ sudo launchctl list | grep sleepwatcher #=> 477 - sleepwatcher
これでログイン時にsleepwatcherが自動で起動することになる
ってことはスリープ状態が監視されるわけで、移行時復帰時に好きなスクリプトを走らせることができるようになったわけだ
これで終わりー