岡持ち Mac Pro (Mid 2010) のディスプレイスリープをスケジュール管理

投稿者: | 2021年9月8日

弊社では私を含め、退勤時もPC電源は落とさず、ディスプレイの電源のみを落とす人がほとんどです。ネットワークモニタ用に使っている岡持ち MacPro (Mid 2010) もそうしたいのですが、繋いでいるディスプレイに電源ボタンが無いため、 ディスプレイスリープ を スケジュール管理 することで、消し忘れ退勤防止に貢献してみます。

電源ボタンの無い LED Cinema Display (27-inch)

このMac Pro(OSは 10.13 High Sierra)に使っているのは、27inch LED Cinema Display、そしてもう一枚繋いでいるのは、以前取り上げたツイ廃液晶で、これらいずれにも電源ボタンは有りません。

図1.ディスプレイプロパティ

図1.ディスプレイプロパティ

退社時にPCの電源は落とさずにディスプレイの電源を落とすのが通例ですが、在籍中はネットワークモニタという性格上、ディスプレイスリープを無効にしています。そこで、出社時間・退社時間に合わせ、ディスプレイスリープの設定を自動的に変えたい、と言うのが本記事の命題です。

 

CLIでディスプレイのオン・オフ

ディスプレイ即スリープ

システム環境設定(System Preferences)内の省エネルギー(Energy Saver)項にある設定項目を、コマンドラインで行えるのがpmsetで、設定を変更するような命令にはroot権限が必要になりますが、オンデマンドで即ディスプレイスリープにするだけならば、以下のコマンドを実行するだけでroot権限も不要です。

ディスプレイ状態の検出

現在のディスプレイの状態も pmset で確認することが出来るので、sshでのリモート操作やスクリプト処理に利用できます。

ディスプレイスリープタイマ無効

ここからはスリープタイマの設定を触るので、root権限が必要です。まず勤務時間中のスリープ無効は、 displaysleep の値を0にします。

図2.ディスプレイスリープ無効

図2.ディスプレイスリープ無効

pmset -g custom でも、現在の設定内容を確認することが出来ます。

ディスプレイスリープタイマ有効

対して勤務時間外は最速でディスプレイスリープして欲しいので、 displaysleep を有効な最小値 1 (分)と設定します。

図3.ディスプレイスリープタイマ1分

図3.ディスプレイスリープタイマ1分

これもコマンドラインで確認してみます。

ウェイクコマンド

ディスプレイスリープを有効にしていて、スリープしているディスプレイは、ディスプレイスリープを無効にしただけではスリープから復帰しないので、別途ウェイク処理が必要です(root権限は不要)。

尚、システム環境設定内の省エネルギー項でも、スケジュール設定することも可能です。

図4.スケジュールウェイク

図4.スケジュールウェイク

スリープタイマが効かないとき

ディスプレイスリープタイマを設定したのに、時間になってもスリープに落ちないことがあります。原因はさまざまですが、その中で少し珍しいのが、こちらのフォーラムの回答の一つに挙がっていた、

「オフラインプリンタに未完のジョブがいないか」

と言うものでしょう。実際、既にリプレースしてネットワークからいなくなったプリンタが、まだ設定内に残っていたので消しました。

図5.オフラインプリンタ

図5.オフラインプリンタ

それでも思惑通りにディスプレイスリープに入ってくれない場合は、 pmset で現在のステータスを取得して確認します。以下の例では、 MAGICWAKE が怪しい箇所ですね。尚、この時、ssh越しにコマンド実行・取得しているので、 NetworkClientActive 項が 1 になっていますが、ssh接続によりスリープが妨げられることはありません。

この時は、普段使わないマウス・キーボードを繋いだままデスク端に片付けていたのですが、その際のマウスが微妙に接地しておらず、動作誤認識がスリープを妨げていました。

 

macOSのcron

本来、macOSにおいてcronは非推奨であり、launchdを使うのが推奨とされていますが、今回は勝手知ったるcronで本命題を実現させたいと思います。非推奨になっても実はlaunchdによってcronは管理されていて、そのplistファイルは次のようになっています。

そして今回実現させたい処理を時系列的に図示したものが次のようになり、これを平日に適用します。

これを crontab -e で以下のように記述します。

何もジョブが設定されていない時、cronプロセスは起動していませんが、ジョブを追加することで自動的にプロセスも動き始めます。

これで命題を達成し、勤務時間中はディスプレイスリープ無効、同時間外は1分スリープになりました。祝日の日中については割愛、長期休暇時はそもそもPCシャットダウンさせるので問題無いでしょう。

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA