今回は「pmset」コマンドについて。知る人ぞ知るパワーマネジメント用コマンドであり、システム環境設定「省エネルギー」パネルにはない、電源関連の設定や使い方が可能になる。単発の電源管理予約機能を例に、その実践的な活用術を紹介してみよう。

「pmset」のYet Anotherな使いかた

pmsetは、Macのパワーマネジメントに関する情報の取得と設定変更を目的としたコマンドだ。システム環境設定「省エネルギー」パネルのCUI版に位置付けられるが、同パネルには表示されていない項目もあるため、機能的にはpmsetのほうが充実している。なお、設定変更には管理者権限が必要なため、sudoコマンドとあわせて実行することも多い。

実はこのpmset、9年ほど前に当コラム(正確には前身の「OS X ハッキング」、現在の「新・OS X ハッキング」を合算すると14年近く続いている連載なのだ)で取りあげたことがある。主な機能と書式に変わりはないため、基本的な使いかたはそちらを参照していただきたい(リンク)。セーフスリープなど「省エネルギー」にない機能を呼び出せること、「pmset -g」で現在の設定を確認できることは押さえておこう。

その際、まったく触れなかった機能がいくつかある。「スケジュール機能」はそのひとつで、「省エネルギー」パネルではできそうでできない「単発の電源管理予約」にpmsetコマンドを利用できるのだ。もちろん、追加のアプリケーション/コマンドは不要、OS Xが動作する環境さえあればいい。

活用事例はいろいろあるはず。たとえば、翌朝8時きっかりに作業を始める予定なので、iCloudの同期など諸々の処理を見越して15分前にスリープを解除しておきたいとか。サーバの混雑でファイルダウンロードがいつ完了するか不明だけれど、日付が変わるタイミングでシャットダウンしておきたいとか。pmsetを使えば、そんな処理が格段にラクになることだろう。

システム環境設定「省エネルギー」パネルでは、毎日/曜日ごとなど繰り返し行われる処理しかスケジュール管理できない

単発スケジュールの組みかた

pmsetで単発スケジュールを組むときには、内部コマンド「schedule」に続けて起動/スリープ解除(poweron/wake)、または終了/スリープ開始(shutdown/sleep)を指定することが基本形だ。そのあとに、「MM/dd/yy HH:mm:ss(月/日/西暦2桁 時/分/秒)」の書式で作動日時を指定すればいい。曜日や毎日といった相対的な表現は使わず、日時が絶対指定になることがポイントだ。

たとえば、2015年4月18日午前6時にスリープ解除する場合には、pmsetに続けて「scedule wake」を指定し、引数として与える日時を「04/18/15 6:00:00」とする。スケジュール管理は設定変更に分類されるため、sudoと組み合わせて以下のように実行することになる。電源オンならばwakeの部分は「poweron」、電源オフならば「shutdown」、スリープならば「sleep」に変えればいい。

ただし、ログインしているユーザがいる場合にスリープ/シャットダウンのスケジュールが到来すると、「このコンピュータは自動的にスリープ(システム終了)するように……」というダイアログが現れ、実行まで10分の猶予が与えられる。pmsetで単発スケジュールを登録したことを忘れていても、作業中に突然スリープ/シャットダウンしてデータ消失、という心配はないので安心してほしい。

$ sudo pmset schedule wake "04/18/15 6:00:00"
Password:

ログイン中にスリープ/シャットダウンの時期が到来すると、このように警告ダイアログが現れる

スケジュールを登録したら、必ずその内容を確認しておこう。pmsetで状態を確認するときに使うオプションは「-g」、スケジュールを意味する引数は「sched」だ(情報の参照なのでsudoの組み合わせは不要)。前掲のコマンドも、以下のとおり登録されていることを確認できるだろう。なお、左端にある数字は登録されたスケジュールの通し番号で、登録した順(番号の小さいほうが新しい)に並べられる。

$ pmset -g sched
Scheduled power events:
[0]  sleep at 04/18/15 09:20:00
[1]  shutdown at 04/18/15 18:25:00
[2]  wake at 04/18/15 06:00:00

登録したスケジュールは、pmsetに続けて「scedule cancel」とすると取り消しできる。その場合、登録時と同様に処理のタイプ(sleep/wake/poweron/shutdown)と日時を指定してもいいが、前掲の「pmset -g sched」で表示された番号を指定したほうが作業はラクになる。

以下のコマンド実行例では、現在登録されているスケジュールのうち0番をキャンセルしている。0番から2番まで3件あったスケジュールが、「sudo pmset schedule cancel 0」実行後は0番と1番の2件に減っていることを確認できるはずだ。

$ pmset -g sched   ←現在のスケジュールを確認する
Scheduled power events:
[0]  sleep at 04/18/15 09:20:00
[1]  shutdown at 04/18/15 18:25:00
[2]  wake at 04/18/15 06:00:00
$ sudo pmset schedule cancel 0    ←0番のスケジュールをキャンセル
Password:
$ pmset -g sched
Scheduled power events:
[0]  shutdown at 04/18/15 18:25:00
[1]  wake at 04/18/15 06:00:00

単発スケジュールを取り消す場合は、「pmset -g sched」で表示された番号を利用するとかんたんだ