ターミナルの caffeinate コマンド:macOS 標準の方法と、その限界
macOS には最初から道具がある。費用はかからず、インストールもいらず、ひとつの仕事に対してはしばしば最良の選択だ。
このコマンドが作られた目的
上の最後の形が本来の考えだ。起こしておく仕組みが仕事にぶら下がる。仕事が走っているあいだマシンは起きていて、終われば同じ瞬間に両方が終わる。あとに覚えておくものが残らないので、どのアプリよりもきれいだ。
ターミナルでのビルド、スクリプト、コピーなら、何かを入れる理由はない。そこで作業する人はすでに正しい道具を持っている。
一つめの限界:ウインドウ
caffeinate はそのプロセスが生きているあいだ動く。ターミナルのウインドウを閉じればセッションは消える。しかも知らせは出ない。五つ並んだタブのどれかで始めたなら、一時間後には見つからない。
加えて、どこかで読める残り時間がない。-t 3600 なら一時間だとわかるが、その一時間がいつ始まったかはもうわからない。
二つめの限界:蓋
このコマンドはアサーションで働く。macOS では閉じた蓋は別の規則で、そこにアサーションは効かない。だから閉じた MacBook は caffeinate が動いていても眠る。
蓋を閉じたままマシンを走らせるには、もう一方のスイッチが必要だ。pmset disablesleep が切り替えるシステム設定である。それがまさに、Toxin の蓋モードが専用の小さなヘルパー経由で引き受けている仕事だ。
どちらがどの場面に合うか
ターミナルで走り、終わりのある仕事なら、caffeinate をその仕事にぶら下げる。入れるものも、忘れるものもない。
一日のうちに何度も起きていてほしいマシン — ビデオ会議、プレゼン、ブラウザのダウンロード、閉じた蓋 — には別の形が合う。メニューバーのアイコンで、状態が見え、時間が自分から終わる形だ。
実際に使う呼び出し
caffeinate -d- コマンドが動いているあいだ、画面を点けたままにする。
caffeinate -i- システムのスリープを防ぐが、画面は暗くなってよい。
caffeinate -t 3600- 指定した秒数だけ起こしておき、そのあと自分で止まる。
caffeinate -i make- 後ろにつけたコマンドが動いているあいだだけ起こしておく。一秒も長くしない。
短く並べると
- caffeinate は標準で入っていて無料、仕事に結びつけるなら理想的。
- 状態も残り時間も表示しない。
- ウインドウを閉じると生き残らない。
- 閉じた蓋には効かない。そこにはシステム設定が必要。
よくある質問
両方を同時に使えますか。
使えます。複数のアサーションは互いに邪魔しません。少なくとも一つ有効なあいだマシンは起きていて、最後の一つが消えたときに眠ります。
caffeinate に sudo は必要ですか。
不要です。コマンドはログイン中のユーザーの名前でアサーションを立てます。システム設定に手を入れて対応する権限を求めるのは pmset disablesleep だけです。
標準の方法は良いもので、限界が二つはっきりしています。Toxin はその外側の場面のために作られています。macOS 用のメニューバーアプリで、まだ Mac App Store にはありません。