用語集/CPU、GPU、エネルギー

非スリープ

別名: Macがスリープしない原因

結論

“非スリープ”は、アクティビティモニタの“エネルギー”タブにある列で、アプリがいまMacのスリープを妨げているかどうかを示します。メディアの再生中、ダウンロード中、時間のかかるタスクの実行中などに、アプリが意図的に行っています。

アプリは、スリープを遅らせるようmacOSに求める“電源アサーション”を取得して、Macを起こしたままにします。ビデオプレーヤーは映画の再生中に、バックアップやダウンロードは終わるまでの間にこれを行うことがあります。ほとんどのアプリは、終わればこの要求を解除します。

Macが自分でスリープしない、または画面がついたままになる場合は、まず“非スリープ”の列を確認しましょう。

Macのスリープを妨げているものを見つける方法

アクティビティモニタを開き、“エネルギー”タブをクリックして、“非スリープ”の列をクリックして並べ替えます。“はい”と表示されているアプリが、Macを起こしたままにしています。

詳しく知りたい場合は、ターミナルでpmset -g assertionsを実行します。有効なアサーションと、それを持っているプロセスが一覧表示され、バックグラウンドプロセスも含まれます。

対処法

ダウンロード中など、アプリに正当な理由があるなら、終わるまで待ちましょう。理由がないなら、アプリを終了すれば通常はアサーションが解除されます。メディアを再生しているブラウザのタブは、消音中のものも含め、よくある原因です。

pmset -g assertionsの読み方

1行で答えを知るには、pmset -gを実行して“sleep”の行を見ます。何かがMacを起こしたままにしているなら、行の最後が“sleep prevented by”という言葉とプロセス名の一覧になっています。

詳細はpmset -g assertionsでわかります。上半分はアサーションの種類ごとの概要で、“Listed by owning process”というセクションには、各プロセス、アサーションを保持している時間、アプリが付けた名前が表示されます。よく見かける種類は次のとおりです:

  • PreventUserIdleSystemSleep: Macは自分ではスリープしませんが、ディスプレイはオフになることがあります。
  • PreventUserIdleDisplaySleep: ディスプレイがついたままになります。ビデオプレーヤーやプレゼンテーションアプリが使います。
  • PreventSystemSleep: Macのスリープを完全に防ぎます。caffeinate -s版は、電源につないでいるときだけ働きます。
  • NoIdleSleepAssertion: Macがアイドル状態でスリープしないようにするときに、一部のアプリが使う別の名前です。
  • powerdが“Prevent sleep while display is on”という名前のアサーションを保持している: Macを使っている間は普通のことです。

coreaudiodなどのシステムプロセスがMacのスリープを妨げている場合

pmset -g assertionsに表示される所有者が、ほかのアプリのためにアサーションを保持しているcoreaudiodなどのシステムプロセスのことがあります。その場合、エントリには“Created for PID”に続けて番号が書かれた行があります。その番号が、探しているアプリです。

  1. pmset -g assertionsを実行し、そのシステムプロセスの下にある“Created for PID”の行を見つけます。
  2. ps -p <PID> -o comm=を実行してアプリの名前を表示します。<PID>はその番号に置き換えてください。
  3. 一時停止中のビデオ、つながったままの通話、録音など、そのアプリがオーディオで行っていることを止めるか、アプリを終了します。
  4. もう一度pmset -g assertionsを実行して、エントリが消えたことを確認します。

Macがスリープしないよくある理由

  • オーディオやビデオを開いているブラウザのタブやアプリ。一時停止中や消音中でも該当します。
  • マイクやカメラを開いたままのビデオ通話アプリ。
  • 終わっていないダウンロード、アップロード、クラウドの同期、バックアップ。
  • ディスクから読み込んでいるアプリ。Appleは、曲を再生している“ミュージック”を例に挙げています。
  • 接続されたプリンタや共有ファイルなど、Macが共有しているサービスをほかの人が使っている。
  • リモートログインなど、アクティブなターミナルセッション。pmsetのttyskeepawakeの設定により、使用中はアイドルスリープが防がれます。pmset -g | grep ttyskeepawakeを実行して確認できます。1ならオンです。
  • 起動して忘れていたcaffeinateコマンドや、スリープ防止ユーティリティ。

Macを起こしたものを確認する方法

Macがスリープしてもまた起きてしまう場合は、電源ログにその理由が記録されています。pmset -g log | grep -e " Sleep " -e " Wake " -e " DarkWake " | tail -20を実行すると、最近のスリープと復帰が表示されます。“due to”の後の文字列が、蓋、キーボードやトラックパッド、スケジュールされたタスクなど、原因を示しています。

“DarkWake”の行は、ディスプレイがオフのままの短い復帰で、macOSがバックグラウンドのタスクに使います。夜の間にいくつかあるのは普通です。

よくある質問

アクティビティモニタの“非スリープ”とは?

アプリがいまMacのスリープを止めているかどうかを示します。“はい”なら、そのアプリは起きたままでいるようmacOSに求めています。

Macがスリープしない原因を調べるには?

アクティビティモニタの“エネルギー”タブで“非スリープ”の列を確認するか、ターミナルでpmset -g assertionsを実行すると、Macを起こしたままにしているすべてのプロセスがわかります。

Macを意図的にスリープさせないようにできる?

はい。標準で入っているcaffeinateコマンドを実行している間、Macは起きたままになります。止めるにはControl+Cを押します。

coreaudiodがスリープを妨げていると表示されるのはなぜ?

coreaudiodはすべてのアプリのサウンドを扱うので、アプリがオーディオを再生または録音している間、スリープのアサーションを保持します。pmset -g assertionsの“Created for PID”の行で、どのアプリかがわかります。

powerdがスリープを妨げているのは問題?

いいえ。powerdはmacOSの電源管理プロセスで、“Prevent sleep while display is on”という名前のアサーションは、Macを使っている間は普通のことです。

ターミナルのセッションがMacのスリープを妨げることはある?

あります。ttyskeepawakeの設定がオンのとき、リモートログインなどのターミナルセッションがアクティブな間は、macOSはアイドルスリープしません。セッションは、スリープのタイマーより長くアイドル状態が続くと、非アクティブとみなされます。caffeinateで実行したコマンドも、終わるまでMacを起こしたままにします。

関連項目

詳しい手順: Macがスリープしない原因。

アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。