スリープと電源

caffeinateでターミナルからMacをスリープさせない

caffeinateコマンドを使うと、タスクの実行中はMacがスリープしません。macOSに含まれていて、設定は何も変更しません。

対象:現在のすべてのmacOSバージョン。「システム設定」の場所はmacOS 13 Ventura以降のものです。確認日:2026年10月29日

症状

  • Macがスリープすると、ダウンロード、ビルド、スクリプトが止まる。
  • 入力がないまま数分たつと、リモートセッションやSSH接続が切れる。
  • 1つのタスクの間だけMacを起こしておきたいが、スリープの設定は変えたくない。

考えられる原因

  • アイドル時のスリープ。キーボードやマウスの入力がない状態が続くと、macOSはMacをスリープさせます。ネットワークの通信だけでは、これを止められないことがあります。
  • ディスプレイのスリープ。ディスプレイは独自のタイマーでオフになります。Macによっては、そのあとシステムもスリープします。
  • 蓋。Macノートブックの蓋を閉じるとスリープします。caffeinateではこれは変わりません。蓋を閉じた状態でMacノートブックを動かし続けるを参照してください。

確認方法

  1. 「ターミナル」を開きます。今スリープを妨げているプロセスを確認します。

    pmset -g assertions

    出力PreventUserIdleSystemSleepなどのアサーションの一覧と、それぞれを保持しているプロセス。

  2. 現在使われているスリープ設定を確認します。

    pmset -g

解決方法

  1. 1つのコマンドの実行中だけMacを起こしておくには、コマンドの前にcaffeinate -iを付けます。コマンドが終わるとアサーションも終わります。

    caffeinate -i make
  2. 決まった時間だけMacを起こしておくには、-tで時間を秒単位で指定します。この例は2時間です。

    caffeinate -i -t 7200
  3. あるプロセスが終わるまでMacを起こしておくには、-wでそのプロセスIDを指定します。

    caffeinate -i -w 12345
  4. ディスプレイもオンのままにするには、-dを追加します。

    caffeinate -d -i
  5. コマンドなしで起動したcaffeinateを止めるには、Control-Cを押します。

  6. ディスプレイがオフのときの自動スリープを止めるには、設定を変更します。Macノートブックでは、アップルメニュー>「システム設定」>「バッテリー」>「オプション」を選択します。「電源アダプタ接続時はディスプレイがオフのときに自動でスリープさせない」をオンにします。

  7. Macデスクトップでは、アップルメニュー>「システム設定」>「エネルギー」を選択します。「ディスプレイがオフのときに自動でスリープさせない」をオンにします。

Kilobatを使う場合

  1. Kilobatは、ダウンロードが静かになるまでMacをスリープさせず、そのあとスリープさせることができます。メニューバーからKilobatを開きます。ティーカップをクリックし、「ダウンロードが終わるまで」を選択します。

  2. CLIでも同じことができます。16 KB/s未満の状態が3分続くと終了します。

    kilobat awake --until-quiet
  3. 1つのコマンドの実行中だけMacをスリープさせず、そのコマンドが転送したデータ量も確認するには、awake --を使います。

    kilobat awake -- make release
  4. これらの機能は無料です。アプリ、CLI、MCPでの手順はレシピを参照してください。

よくある質問

caffeinateを使えば、蓋を閉じてもMacはスリープしませんか?

いいえ。caffeinateが止めるのはアイドル時のスリープです。外部ディスプレイ、キーボード、電源を使っている場合を除き、Macノートブックは蓋を閉じるとスリープします。蓋を閉じた状態でMacノートブックを動かし続けるを参照してください。

-sオプションは何をしますか?

-sはシステムスリープを止めます。manページによると、MacがAC電源につながっているときだけ有効です。

caffeinateで設定は変わりますか?

いいえ。電源アサーションを作成するだけです。アサーションはcaffeinateが終了すると解除されます。

出典

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。