MacのCaffeinateコマンドが効かない?ロック画面になった時の対処法

公開日:
目次

長時間の処理を実行する際に、Macがスリープしないように caffeinate または caffeinate -i コマンドを実行したのに、気がつくとロック画面になって止まっていました。

調べて解決したので、備忘録を残します。

caffeinateコマンドとは

caffeinateは、macOSでシステムのスリープを防止するためのコマンドラインツールです。

Mountain Lion 以降のmacOSに標準で搭載されており、特定の条件下でシステムがスリープしないようにすることができます。

長時間のダウンロードや処理中にMacが勝手にスリープしてしまうのを防ぐことができます。

主要なオプション

主要なオプションを以下に示します。

オプション 説明
-d ディスプレイのスリープを防止
-i システムのアイドルスリープを防止(デフォルト)
-m ディスクのスリープを防止
-s システム全体のスリープを防止(AC電源接続時のみ)
-u ユーザーがアクティブであると宣言
-t 秒数 指定した時間だけ実行
-w PID 指定したプロセスが終了するまで実行

なぜロック画面になってしまうのか

スリープとロック画面の違い

これが重要なポイントです。

  • スリープ: システム全体が休止状態になる
  • ロック画面: システムは動作しているが、セキュリティのため画面がロックされる

caffeinate -i(またはオプションなしのcaffeinate)はスリープを防止しますが、ロック画面は防げません

問題の原因

  1. ディスプレイがスリープする
  2. セキュリティ設定により画面がロックされる
  3. 結果として、システムは動いているのにロック画面が表示される

解決方法

オプションでディスプレイスリープも防止することで、ロック画面を防ぐことができます。

# ディスプレイのスリープを防止
caffeinate -d

# システムとディスプレイ両方のスリープを防止
caffeinate -di

# 最も確実:システム、ディスプレイ、強制スリープも防止
caffeinate -dis

基本的には、caffeinate -dis を使うことで、システム全体のスリープとディスプレイのスリープを防ぎ、ロック画面も表示されないようにできます。

ただし-sオプションはAC電源接続時のみ有効なので、それ以外はcaffeinate -diを利用しましょう。

実際にはディスプレイだけ動いていてシステムがスリープという状況はほぼないと思うのでcaffeinate -dのみでも良いですが、念の為-iオプションを付けておくと安心だと思います。

ということで、長時間の場合はcaffeinate -disを使いましょう。