趣味のプログラム工房

Ubuntu スリープからの時間復帰!

Ubuntuで、サスペンド(スリープ)からの時間指定復帰ってできるんですね!!

思った以上に資料を探すのに苦労しました。

まず、キーワードで適当に検索をした結果、引っかかったのが「apmsleep」を使う方法ですが、これは駄目。
電源管理はapmではなく、acpiなのでこのツールは使えません。

続いて見つけたのが、
/proc/acpi/alarm」に復帰時刻を設定して、スリープするという方法。
ですが、ubuntu11.10ではこのツールがありませんでした。orz


と思ったのですが、
/sys/class/rtc/rtc0/wakealarm」に同じツールがありました。

というわけで、手順としては、
①sudo chmod 777 /sys/class/rtc/rtc0/wakealarm
②sudo echo 0 > /sys/class/rtc/rtc0/wakealarm
③sudo echo `date -u +%s -d +10min` > /sys/class/rtc/rtc0/wakealarm
④cat /proc/driver/rtc

①は「/sys/class/rtc/rtc0/wakealarm」への書き込みは何故かsudoでもNGなので、あらかじめ、書き込みを有効にしておきます。
②は初期化のため。いきなり③をするとエラーとなります。
で、③で復帰時間の設定。(上記のコマンドでは現在時刻+10分を設定しています。なお、②をするだけでも現在時刻+5分の値が設定されるようです。)
④で設定内容の確認です。
alrm_time、alrm_dateに復帰予定の時間が入っていれば成功です。
ちなみに、標準時間で設定されるので、日本時間では+9時間で換算してください。(日本時間の12時に復帰させたい場合、3時で設定されていればOKです。)


また、注意として、BIOSのRTC alarmを無効にする必要があるようです。(環境による)
あと、Ubuntuでサスペンドにする際、きれいにサスペンド状態にならず、処理の途中でフリーズすることがあります。
以下のサイト(Ubuntu11.10でサスペンドやハイバネートに失敗する問題の解決方法 - 勉強日記)によると、

①dconf-editor をインストール (sudo apt-get install dconf-editor)
 →間違い、sudo apt-get install dconf-tools
②dconf-editor の org > gnome > desktop > lockdown を選択
③disable-lock-screen にチェックを入れる
で回避できるそうです。
が、①上記の通り若干間違っており、インストールすパッケージ名は「dconf-tools」です。
とりあえず、確かにいまのところ上手くいっています。

これで我が家のリナたん(linuxサーバ)も一段と省エネ仕様に!


また、シェルなどで自動的にスリープ時刻を設定してスリープするといった運用を行うのであれば、「gnome-schedule(Scheduled tasks)」等のタスクスケジューラや「visudo」(シェルをsudoで実行してもパスワードの入力をしなくても実行できるようにする。シェルの自動実行に必須)を使うのがよいのではないでしょうか。


追記
サスペンドで失敗するのは確実に回避する方法は結局見つかりませんでした。
原因不明ですorz


2012年05月13日