$ sudo pmset schedule sleep "$(date -v +'1H' +'%D %T')"
OSX 10.11 El Capitan
および OSX 10.10 Yosemite
で動作確認しています。おそらくそれ以下のバージョンでも動くやつは動くと思います。多分。
経緯
私は就寝する時に Mac mini で音楽を鳴らしながら床に就くのですが、つけっぱなしなのもあれなので、毎晩寝る直前に
- システム環境設定
- 省エネルギー
- スケジュール
を経て*1、「今は0時だから、1時にスリープするようにセットして…と…」みたいな感じで設定しています。 だいたい寝る時間は一定なのですが、夜更かしするなどしてスリープ時刻を過ぎてから寝ることもしばしばなので そういう時は上記の設定を毎回行っています。
正直めんどいのでコマンドラインでぱぱっとできないかなと調べてみました。
pmset
遅ればせながら pmset
というコマンドの存在を知りました。
スリープモードの変更(hibernateとか)等もできるらしいのですが、今回使うのは pmset schedule
です。
pmset schedule
schedule
サブコマンドでは引数として
- sleep
- wake
- poweron
- shutdown
- wakeorpoweron
これらの type と時刻を受けとります。例えば
$ sudo pmset shceudle wake "07/04/16 20:00:00"
とすれば「2016年7月4日の午後8時 にマシンをスリープから復帰させろ(wake)」になります。便利。
「1時間後」の時刻を取得する
おなじみの date
コマンドを使います。
pmset schedule
が許容する時刻のフォーマットは MM/dd/yy HH:mm:ss
なので
$ date -v +1H +'%D %T'
こうなります *2 。
最終的に
組合せると、冒頭の
$ sudo pmset schedule sleep "$(date -v +'1H' +'%D %T')"
になります。お疲れ様でした。
余談ですが
しっかり登録されてるかを確認しましょう。
$ date Wed Apr 20 09:51:24 JST 2016 $ sudo pmset schedule sleep "$(date -v +'1H' +'%D %T')" $ pmset -g sched Scheduled power events: [0] sleep at 04/20/16 10:51:27
OK
まとめ
眠い