ガイド
pmset disablesleep より安全なやり方
ふたを閉じたままMacを起こしておく方法を検索すると、sudo pmset -a disablesleep 1 を実行しろと出てきます。確かに効きます。しかしこれは、持ち主も期限もなく、なぜ入れたのかも覚えていないシステム全体のスイッチです。だから多くの人はこれに二度出会います。入れるときと、「なぜ1週間もMacがスリープしていないのか」を調べるときに。ここでは、それが実際に何をするのか、どう戻すのか、そして同じ発想を対象を絞って実現するとどうなるのか — Perked が形づくられた考え方を説明します。
このコマンドが実際にすること
多くのスリープ防止ツールは電源アサーションを取ります。プロセス単位の丁寧な要求で、macOS が他の事情と併せて判断するものです。disablesleep はそれとは違います。電源管理そのものに「スリープは無効」というフラグを立てます。アイドルスリープだけでも、ディスプレイスリープだけでもなく、ふたを閉じたときのスリープも含めて、すべてです。
だから人はこれに手を伸ばします。外部ディスプレイなしでふたを閉じた動作を得られる唯一の設定だからです。そして同じ理由で、そのまま常用するのは危険です。
- システム全体に効く アプリにもジョブにもターミナルのウィンドウにも紐づきません。マシン上の他のものもスリープできなくなります。
- root が必要 だから sudo と管理者パスワードが要ります。長いジョブを生かすたびにパスワードを求められる摩擦は、いずれ良くない形で回避されます。
- 再起動しても残る ここで多くの人がつまずきます。再起動では消えません。0 に戻すことでしか消えません。
- 目に見えない メニューバーのアイコンも、通知も、アクティビティモニタの表示もありません。唯一の痕跡は pmset -g の一行です。
- Macの状態を何も知らない バッテリーが尽きかけていても、カバンの中でも、高負荷で熱くても、無期限に起こし続けます。このフラグはそれらについて何の意見も持ちません。
まず、今それは入っていますか?
何よりも先に確認を。過去にそのコマンドを貼り付けたことがあるなら、何か月も前のまま残っているかもしれません。
pmset -g | grep SleepDisabled— 1 ならシステム全体でスリープが無効です。0、または行が出なければ問題ありません。sudo pmset -a disablesleep 0— 元に戻します。その後もう一度確認して、0 になっていることを確かめてください。pmset -g assertions— これも見る価値があります。*もう一方*のスリープ防止、つまりプロセス単位のアサーションが表示されるので、他に何かがマシンを起こしているかが分かります。
SleepDisabled が 1 で、自分が設定した覚えがなければ、どれかのアプリが設定しています。ほぼ確実に、クラムシェル対応のスリープ防止ツールです。それ自体が悪いわけではありませんが、指させるアプリであるべきですし、仕事を終えたらフラグを片付けるものであるべきです。
caffeinate: より軽く、限界にも正直
標準の caffeinate コマンドは、人々が disablesleep を使う用途の大半にとって正しい道具です。グローバルなフラグを立てるのではなくアサーションを取り、パスワードも不要で、そして重要なことに、起動したプロセスと一緒に終わります。ターミナルのウィンドウを閉じれば、後始末も済みます。
caffeinate -i ./long-job.sh— そのコマンドが動いている間だけMacを起こし、終われば止まります。これが良い型です。caffeinate -w 4821— そのIDのプロセスが終わるまで保持します。すでに動いているものに便利です。caffeinate -t 3600— 1時間だけ。あとは自分で手放します。スイッチより、常にタイムアウトの方が安全です。
限界はここです。caffeinate は、ふたを閉じたままMacBookを起こしておくことはできません。disablesleep フラグ以外にそれができるものはありません。つまり正直にまとめれば、caffeinate はふたを閉じたくなる瞬間までは安全な選択肢で、その先はまたグローバルなスイッチに戻ってしまう — きちんと塞ぐ価値があるのは、まさにこの隙間です。
同じ発想の、安全な形
フラグそのものが悪なのではなく、入れっぱなしが悪なのです。だから安全な形とは disablesleep を避けることではなく、その責任を引き受けることです。両者を分けるのは5つの性質です。
- 対象が絞られている 実際に何かが動いている間だけ入り、終わった瞬間に切れる。「思い出すまで入りっぱなし」ではなく。
- 自分で後始末する 設定した側がクラッシュしても、強制終了されても、何かがおかしくなっても、スリープはひとりでに戻る。生のコマンドに完全に欠けているのがこの性質です。
- 電源を意識する カバンの中でバッテリー8%のノートは、誰が何を主張していようとスリープを許されるべきです。
- 温度を意識する ふたを閉じた高負荷のノートには熱の逃げ場がありません。熱くなりすぎたらセッションを終えるべきで、無視すべきではありません。
- 見える 入っていること、なぜ入っているのかが分かり、あとから何が起きたかを読み返せるべきです。
Perked のやり方
Perked はこのフラグを使い続けますが、暴発しない形にします。特権が要る部分は、macOS がシステムデーモンとして入れる小さなヘルパーです。ログイン項目で一度承認すれば、その後は二度と管理者パスワードを求められません。アプリは XPC でヘルパーと話し、セッションが本当に動いている間だけフラグを要求します。
自分で後始末する性質は、書き出しておく価値があります。シェルコマンドでは作れない部分だからです。スリープ防止が有効な間、アプリは30秒ごとにヘルパーへ心拍を送ります。ヘルパー側で90秒それが届かなければ — アプリが落ちた、強制終了された、何かが壊れた — ヘルパーは自分でスリープを元に戻します。Perked が死んだままMacを永久に起こし続ける、という状態は存在しません。
その周りに残りの4つの性質が並びます。コーディングエージェント(またはあなたが指定したプロセス)を検出したら入り、終われば切れる。電源接続または設定したバッテリー下限を条件にできる。Macが熱くなれば一時停止する。そして切り替えをすべて記録するので、実行が終わった理由を読み返せます。土台のフラグは同じなので、確認の仕方も同じです — セッション中と終了後に pmset -g | grep SleepDisabled を実行してみてください。
よくある質問
sudo pmset -a disablesleep 1 は何をしますか?
システム全体の電源管理フラグを立て、スリープを完全に無効にします — アイドルスリープ、ディスプレイスリープ、ふたを閉じたときのスリープのすべてです。root が必要で、アプリ単位ではなくマシン全体に効き、戻すまで再起動をまたいで残ります。
pmset disablesleep を元に戻すには?
sudo pmset -a disablesleep 0 を実行し、pmset -g | grep SleepDisabled で 0 と出ることを確認してください。Macを再起動しても消えません。
スリープを無効にするのは MacBook に悪いですか?
フラグ自体が壊すわけではありません。ただし安全網が外れます。起こされたままのMacは、バッテリーが減っても熱くなってもスリープできません。ふたを閉じた高負荷のノートには、熱を逃がす余地がほとんどありません。風の通る硬い面に置くこと、そして実際に作業している間だけにすること — 効いてくる違いはそこです。
caffeinate は安全な代わりになりますか?
多くの場合は、はい。プロセス単位のアサーションを取り、パスワードも不要で、結びついたコマンドやプロセスが終われば止まります。唯一の硬い限界は、ふたを閉じたままMacBookを起こしておけないことです。それができるのは disablesleep フラグだけです。
スリープを丸ごと無効にせずに、ふたを閉じたまま起こしておけますか?
別の設定では無理です。外部ディスプレイなしでふたを閉じたまま起こしておくことこそ、このフラグが司る領域だからです。変えられるのは適用範囲です。ジョブが動いている間だけ設定し、終わったらすぐ消す。そして監視しているアプリが死んだらスリープを戻す番犬を置く。Perked がしているのはそれです。
フラグを設定したアプリがクラッシュしたら?
生のシェルコマンドなら、何も起きません — 誰かが気づくまでフラグは立ったままです。Perked のヘルパーは30秒ごとの心拍を期待し、90秒それが途切れれば自分でスリープを有効に戻します。クラッシュや強制終了でも、通常の動作がひとりでに戻ります。
関連ガイド
クラムシェルの詳しい手順: MacBookをふたを閉じたまま起こしておく →
より軽い道具をフラグごとに: macOS の caffeinate コマンド →
すでに何かがMacを起こしている? Macを眠らせていないのは何か →