システム起動時とスリープ復帰時に、特定のアプリを起動したい

昨日書いた「バッテリー状態の記録」を行うために、
どうしようかと考えていました。


たとえばcronで「1時間毎とか1日毎に実行」でもいいんですが、
そんなに頻繁に充放電するものでもないし、
Macを起動したときと、スリープから復帰したときくらいに
動かせればいいかな、なんて思ってました。


Macでシステム起動時に特定のプログラムを起動するには、

「システム環境設定」-「アカウント」-「ログイン項目」

に好きなアプリを登録することでOKのようです。
コマンドラインのプログラムなんかを登録するには、
AppleScript経由で登録すれば大丈夫なのかな。
あとで試してみたいと思います。


さて「スリープからの復帰時」というのはちょっと曲者のようです。
ざっとググってみても、それっぽいものが見つかりませんでした。


ポーリング方式で確認する方法は、いくつか見つかりました。

/var/log/system.log

には、スリープ復帰の情報が書き込まれるらしく、
これを数秒ごとに確認することで、スリープ解除を検知することができます。


だけど、今回の目的である、バッテリーのログを記録するのに
数秒ごとにsystem.logをチェックするくらいなら
1時間毎にバッテリーログを記録するプログラムを起動したほうが
よっぽどCPUやHDDの負荷、バッテリー消費にやさしいでしょう。


CocoaAPIにスリープ復帰のイベントを受け取とれる仕組みがあるのかもしれませんが、まだ調べていません。


とりあえず、スリープ復帰時のプログラム実行方法はゆっくり調べることにして、
バッテリーログの記録はcronで1時間に1回くらい実行する方法で行ってみたいと思います。


ほんとは1日1回くらいで全然いいのですが、
たとえばcronで「毎日12時に実行」とかやってしまうと、
12時にMacが起動していないとプログラムが実行されず、
ずっとログが記録されないということも十分に発生しかねないので、
1時間に1回くらいにしてみます。


次回:はてなグラフに自動でアップするスクリプトを作成予定。


macbook pro battery capacity (mAh)

macbook pro battery cycle time

[2009.12.08追記]
作りました。mac bookのバッテリー状態をはてなグラフに記録してみよう - mac日記