クラムシェル運用なのにたまにスリープする謎、原因はアイドルタイマーだった話

クラムシェル運用なのにたまにスリープする謎、原因はアイドルタイマーだった話

地味だけど根が深い話でした。普段は外部ディスプレイにMacをつないで、蓋を閉じて使うクラムシェル運用をしています。電源にもつなぎっぱなしなので、理屈の上ではスリープするはずがないんですが、たまに画面がブラックアウトして「あれ、落ちてる」となることがありました。原因をpmsetで追いかけたら、見落としていた設定が見つかった話です。

そもそもクラムシェル運用の条件は満たしていたはず

条件は揃っていたはず。クラムシェルモードが機能する条件は、外部ディスプレイ接続・電源接続・(必要なら)外付けキーボード/マウスの3つで、うちの環境はどれも満たしていました。なので「条件は揃ってるのになんでスリープするんだ」と、しばらく原因不明のまま気になっていました。

pmset -g customで電源設定を全部見る

まずは現状把握です。急がば回れです。現在の電源管理設定を一覧できるpmset -g customを実行してみると、こんな出力が返ってきました。

$ pmset -g custom
AC Power:
 lidwake              1
 autopoweroff         0
 standbydelaylow      86400
 standbydelayhigh     86400
 ttyskeepawake        1
 hibernatemode        3
 sleep                120
 autorestart          0
 powernap             1
 disksleep            10
 standby              1

犯人はここでした。sleep 120の行です。これは「システム自体が2時間操作されないとスリープする」という設定でした。クラムシェル運用は「蓋を閉じてもスリープしない」仕組みではあるものの、この“操作が一定時間ない場合にシステムごとスリープする”というアイドルタイマーは、条件を満たしていても別枠で効いてしまうようでした。外部ディスプレイ越しに操作はしていても、Mac本体のトラックパッドやキーボードに触れていない時間が続くと、この120分カウントが進んでしまっていたようです。

実害に気づいたきっかけ

きっかけは自動投稿でした。地味に痛い話です。このスリープに気づいたのは、Threadsの自動投稿をlaunchdで組んでいた時でした。Macが完全にスリープしている間はlaunchdのジョブ自体も動かないので、放置している時間が長いと投稿を取りこぼす可能性があります。「見てなくても投稿される仕組みにしたはず」が、実は電源設定次第で崩れる可能性があると気づいて、慌てて確認した経緯です。

0にはせず、300に落ち着けた

結論は300でした。理由は単純です。sudo pmset -c sleep 0で完全に無効化することもできたんですが、四六時中スリープしない状態にしておく必要もないかなと思い直しました。夜中まで起きていてもらう理由はないので、最終的には300(5時間)に設定しています。ちなみにこの設定にしても、キュー投稿自体が消えるわけではなく、Macが起きたタイミングで少し遅れて投稿される、という形なので、実害としては「多少ズレる」程度で済みそうです。

まとめ

教訓は明確でした。見た目の条件だけでは判断できません。クラムシェル運用の条件を満たしていても、システム全体のアイドルタイマーは別枠で働く、というのが今回の発見でした。見えている条件(蓋・電源・ディスプレイ)だけで判断せず、pmset -g customで実際の設定値を見に行くのが結局一番早いなと感じた回です。

この記事の内容を、YouTube Shortsでも紹介しています

この記事を書いた人

Web制作歴10年近く。WordPressのテーマカスタマイズやコーディングを中心に、副業・本業ともにweb制作に携わっています。このブログでは、実際に手を動かして分かったことを書いています。

Cat's Handをフォローする

この記事が参考になったら、応援クリックをお願いします

タイトルとURLをコピーしました