ガイド/Macがスリープしない原因

Macがスリープしないのはなぜ? スリープを妨げているものを見つける方法

Atta 🐬

Vitalsの創業者

公開日

結論

ターミナルを開いてpmset -g assertionsを実行します。“Listed by owning process”の下の各行に、スリープを妨げているアプリ、その継続時間、アプリが示した理由が表示されます。アクティビティモニタでは、“エネルギー”タブの“非スリープ”の列で同じアプリが“はい”と表示されます。よくある原因は、ブラウザのタブで開いたままのビデオや通話、ダウンロードやバックアップ、実行中のままのcaffeinateコマンド、電源接続中にMacをスリープさせない設定です。MacBookなら、システムモニタのVitalsが、ターミナルを使わずに“バッテリー”タブとメニューバーでこれらのアプリを理由と継続時間とともに表示します。

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

  1. 01 ターミナルを開いてpmset -g | grep sleepを実行します。何かがスリープを妨げている場合、sleepの行の最後に(sleep prevented by Google Chrome, powerd)のような注記が付きます。
  2. 02 詳しく見るにはpmset -g assertionsを実行します。“Listed by owning process”の下の各行に、アプリとそのPID、スリープを妨げている時間、妨げ方の種類、そしてnamedという語のあとにアプリが示した理由("Video Wake Lock"など)が表示されます。
  3. 03 powerdの"Prevent sleep while display is on"とUserIsActiveの行は無視してかまいません。あなたがMacを使っているというだけの意味で、使うのをやめれば消えます。
  4. 04 アクティビティモニタを開いて“エネルギー”をクリックし、“非スリープ”の列を見ます。同じアプリが“はい”と表示され、そこから終了することもできます。
  5. 05 アプリを終了するか、ビデオを再生しているタブ、通話、ダウンロードなど、実行中のものを閉じます。もう一度pmset -g assertionsを実行して、その行が消えたことを確認します。

スリープはするのに何度もスリープが解除されるのは別の問題で、専用のログがあります。下の“Macが勝手にスリープ解除されるとき”を参照してください。

Macは、スリープしないよう求めるものが何もなければスリープします。アプリがスリープしないよう求めるには、電源アサーションを作成します。これは、アプリ名とその理由をmacOSが記録する要求です。ビデオプレーヤー、通話、ダウンロード、バックアップには、そう求めるもっともな理由があります。問題は、理由がなくなったあとも要求が残るときです。消音で動画を再生しているタブ、別のタブで終わった通話、忘れていたターミナルウインドウのcaffeinateなどです。下の表では、見えている症状から考えられる原因と確認する場所を示しています。

Macがスリープしない原因

気づいた症状考えられる原因確認する場所
画面がまったくオフにならない アプリが画面をオンのままにしている: ビデオ、通話、プレゼンテーション pmset -g assertions: PreventUserIdleDisplaySleep
画面はオフになるが、Mac本体がスリープしない ダウンロード、バックアップ、同期、ビルドがシステムのスリープを妨げている pmset -g assertions: PreventUserIdleSystemSleep
電源につないでいる間はまったくスリープしない 電源接続中にスリープさせない設定 システム設定 → バッテリー → オプション(デスクトップのMacでは“エネルギー”)
スリープしたあと、夜中に勝手にスリープが解除される 定期的なメンテナンス、ネットワーク、接続されたデバイス pmset -g logとpmset -g sched
ターミナルでコマンドを実行したあと、スリープしなくなった caffeinateが実行中のまま アクティビティモニタ: caffeinateを検索
ほかのデバイスがMacの接続を使っている間、スリープしない インターネット共有 システム設定 → 一般 → 共有

アサーションの種類の意味

pmset -g assertionsの各行には種類が表示されます。そのうち3つがMacのスリープを妨げます。残りは管理用の記録で、表示されていても普通のことです。

  • PreventUserIdleDisplaySleepまたはNoDisplaySleepAssertion: 画面をオンのままにし、Macもスリープさせません。ビデオプレーヤー、ビデオ通話、プレゼンテーションが使います。
  • PreventUserIdleSystemSleepまたはNoIdleSleepAssertion: 画面はオフになれますが、Mac本体はスリープさせません。ダウンロード、バックアップ、音楽の再生、ビルドが使います。
  • PreventSystemSleep: 電源接続中なら、蓋を閉じてもMacをスリープさせません。まれで、たいていはシステムサービスです。
  • UserIsActive、BackgroundTask、ApplePushServiceTask: 管理用の記録で、それ自体はスリープを妨げません。

Macが勝手にスリープ解除されるとき

スリープしたMacでも、メールの確認、同期、バックアップ、メンテナンスのために、画面をオフにしたまま短時間だけ自動でスリープを解除することがあります。macOSではこれをダークウェイクと呼びます。一晩に数回なら普通です。数十回に及んだり、画面がオンになる完全なスリープ解除が起きたりするなら、デバイスか設定が原因です。

  1. pmset -g log | grep -E "Wake from|DarkWake from" | tail -20を実行すると、直近20回のスリープ解除が表示されます。“due to”のあとの文字が原因を示しています。lidは蓋を開けたこと、rtc/Maintenanceは定期メンテナンスによるスリープ解除で、USB、Bluetooth、ネットワークのデバイス名があれば、そのデバイスが原因です。
  2. pmset -g schedを実行すると、macOSがこのあと予定しているスリープ解除と、それぞれを要求したシステムの部分が表示されます。
  3. デバイスがMacのスリープを解除しているなら、一晩取り外して、スリープ解除が止まるか確かめます。
  4. ネットワークによるスリープ解除が原因なら、“ネットワークアクセスによるスリープ解除”を“電源アダプタ使用時のみ”または“しない”に設定します。MacBookではシステム設定 → バッテリー → オプション、デスクトップのMacではシステム設定 → エネルギーにあります。

意図的にMacをスリープさせない設定

設定によっては、そもそもMacをスリープさせないようになっています。問題のあるアプリを探す前に確認しましょう。

  • MacBookでは、システム設定 → バッテリー → オプションの“電源アダプタ使用時はディスプレイがオフのときに自動でスリープさせない”。
  • デスクトップのMacでは、システム設定 → エネルギーの“ディスプレイがオフのときに自動でスリープさせない”。
  • システム設定 → 一般 → 共有の“インターネット共有”。ほかのデバイスがMacの接続を使っている間、Macをスリープさせません。
  • システム設定 → ロック画面で、ディスプレイをオフにするまでの時間を“しない”にしている場合。画面がオンのままになり、Macもスリープしません。

caffeinateと、要求に応じてMacをスリープさせないアプリ

caffeinateは、実行している間MacをスリープさせないようにするmacOSのコマンドです。スクリプトや開発ツールが使うほか、スリープ防止用のメニューバーアプリも使っています。pmset -g assertionsには自身の名前で、アクティビティモニタにはcaffeinateとして表示されます。

自分で起動した場合は、そのターミナルウインドウでControl+Cを押します。そうでない場合は、どのアプリが起動したかを調べます。アクティビティモニタで“表示” → “すべてのプロセス(階層表示)”を選び、親プロセスの下にあるcaffeinateを探します。親を終了すれば止まります。

Vitalsでできること

MacBookなら、Vitalsがスリープを妨げているアプリを、ターミナルを使わずにわかりやすい言葉で表示します。

  • “バッテリー”タブの“このMacのスリープを妨げているアプリ”: 各アプリを、“ビデオを再生中”や“ダウンロード中”などアプリが示した理由、スリープを妨げている時間、画面もオンのままにしているかとともに表示
  • アプリがスリープを妨げている間は、メニューバーのドロップダウンの“バッテリー”セクションにも同じリストを表示。蓋を閉じる前に確認できます
  • ブラウザは、いくつのタブが再生中でも1行で表示。ターミナルに残ったcaffeinateは“スリープ防止を要求”と表示
  • 何もスリープを妨げていなければ“スリープ可能”と表示

知っておくと便利なこと

  • このリストはMacBookのみです。Mac mini、iMac、Mac Studio、Mac Proではpmset -g assertionsを使ってください。
  • powerd、WindowServer、Handoff中のsharingdなど、一瞬ずつスリープを妨げるmacOS自身のプロセスは含まれません。すべてを見るにはpmset -g assertionsを使います。
  • Vitalsはスリープ解除の履歴を表示しません。それにはpmset -g logを使います。
Vitalsを購入 $9 発売記念期間は$9、その後は$29。14日間の返金保証付き。

よくある質問

Macのスリープを妨げているのは何?

ターミナルでpmset -g assertionsを実行します。“Listed by owning process”の下の各行に、アプリ名、スリープを妨げている時間、その理由が表示されます。アクティビティモニタでは、“エネルギー”タブの“非スリープ”の列で同じアプリが“はい”と表示されます。

蓋を閉じてもMacがスリープしないのはなぜ?

バッテリー駆動中は、アプリが何を要求していても、蓋を閉じればMacBookはスリープします。電源につないで外部ディスプレイを接続した状態で蓋を閉じた場合は、仕様どおりMacは動き続けます。Appleはこれをクラムシェルモードと呼んでいます。それ以外でスリープしない場合は、pmset -g assertionsでPreventSystemSleepを確認しましょう。

夜中にMacが勝手にスリープ解除されるのはなぜ?

たいていは、メンテナンス、ネットワークの通信、接続されたデバイスのためです。pmset -g log | grep -E "Wake from|DarkWake from" | tail -20を実行し、“due to”のあとの文字を読みましょう。ネットワークが原因なら、“ネットワークアクセスによるスリープ解除”を“電源アダプタ使用時のみ”に設定します。

アプリがMacのスリープを妨げないようにするには?

ビデオ、通話、ダウンロードなど、アプリが実行中のものを閉じるか、アプリを終了します。caffeinateの場合は、そのターミナルウインドウでControl+Cを押すか、起動したアプリを終了します。

Macがまったくスリープしないのはよくない?

電力を消費しますし、バッグに入れたMacBookなら熱がこもってバッテリーもなくなります。サーバとして使っているデスクトップのMacなら、それが望みどおりである限り問題はありません。

Macのスリープを妨げているものがわかるアプリはある?

MacBookなら、Vitalsが“バッテリー”タブとメニューバーのドロップダウンに、スリープを妨げているアプリを、それぞれが示す理由、スリープを妨げている時間、画面もオンのままにしているかとともに一覧表示します。

用語集

ほかのガイド