目次
長時間の処理を実行する際に、Macがスリープしないように caffeinate または caffeinate -i コマンドを実行したのに、気がつくとロック画面になって止まっていました。
調べて解決したので、備忘録を残します。
caffeinateコマンドとは
caffeinateは、macOSでシステムのスリープを防止するためのコマンドラインツールです。
Mountain Lion 以降のmacOSに標準で搭載されており、特定の条件下でシステムがスリープしないようにすることができます。
長時間のダウンロードや処理中にMacが勝手にスリープしてしまうのを防ぐことができます。
主要なオプション
主要なオプションを以下に示します。
| オプション | 説明 |
|---|---|
-d |
ディスプレイのスリープを防止 |
-i |
システムのアイドルスリープを防止(デフォルト) |
-m |
ディスクのスリープを防止 |
-s |
システム全体のスリープを防止(AC電源接続時のみ) |
-u |
ユーザーがアクティブであると宣言 |
-t 秒数 |
指定した時間だけ実行 |
-w PID |
指定したプロセスが終了するまで実行 |
なぜロック画面になってしまうのか
スリープとロック画面の違い
これが重要なポイントです。
- スリープ: システム全体が休止状態になる
- ロック画面: システムは動作しているが、セキュリティのため画面がロックされる
caffeinate -i(またはオプションなしのcaffeinate)はスリープを防止しますが、ロック画面は防げません。
問題の原因
- ディスプレイがスリープする
- セキュリティ設定により画面がロックされる
- 結果として、システムは動いているのにロック画面が表示される
解決方法
オプションでディスプレイスリープも防止することで、ロック画面を防ぐことができます。
# ディスプレイのスリープを防止
caffeinate -d
# システムとディスプレイ両方のスリープを防止
caffeinate -di
# 最も確実:システム、ディスプレイ、強制スリープも防止
caffeinate -dis
基本的には、caffeinate -dis を使うことで、システム全体のスリープとディスプレイのスリープを防ぎ、ロック画面も表示されないようにできます。
ただし-sオプションはAC電源接続時のみ有効なので、それ以外はcaffeinate -diを利用しましょう。
実際にはディスプレイだけ動いていてシステムがスリープという状況はほぼないと思うのでcaffeinate -dのみでも良いですが、念の為-iオプションを付けておくと安心だと思います。
ということで、長時間の場合はcaffeinate -disを使いましょう。
