Mac

Macがスリープ解除する原因を特定する

Macがスリープ解除する原因を特定する

眠っているマックが突然目覚める

Macをスリープ状態にしたのに、戻ってみると勝手に起動していた、なんて経験はありませんか?Macが突然スリープ解除してしまうという不思議な現象に何度か遭遇したことがあります。ターミナルコマンドをいくつか使えば、Macがスリープ解除した原因を突き止めることができます。Macがなぜスリープ解除されるのか疑問に思っている方は、この記事を読み進めて原因究明方法をご確認ください。

この問題が発生する理由は様々です。Macがスリープ状態から復帰する原因は、ハードウェアイベントの場合もあれば、ソフトウェアイベントの場合もあり、その他の原因である場合もあります。このガイドは、Mac、iMac、MacBook Air、Proなどがスリープ状態から復帰する理由を特定するのに役立ちます。少し技術的な部分もありますが、Mac OS Xのコマンドラインを使ってシステムログを調べ、複数文字の「復帰理由」コードを、以下に示す実際のスリープ理由リストと比較する必要があります。それでは始めましょう。

Macがスリープ解除する理由を調べる方法

/Applications/Utilities/ にあるターミナルを起動し、MacOS システム ソフトウェアのバージョンに応じて、コマンド ラインで次のように入力します。

macOS Monterey および Big Sur の場合は、次のコマンドを試してください。
pmset -g log |grep "Wake Request"

これにより、ウェイクアップを引き起こしている直接的なプロセスまたはアプリが明らかになる場合があります。または、次のコマンドを実行すると、ウェイクアップを引き起こしているプロセスだけでなく、システムウェイクの原因究明に役立つデバッグコードも表示される可能性があります。

log show |grep -i "Wake request"

新しいログ システムを備えた MacOS Sierra、Mojave、Catalina 以降では、次のコマンドを使用します。

log show |grep -i “Wake reason”

MacOS El Capitan、Yosemite、Mavericks およびそれ以前のバージョンの場合、従来の syslog コマンドを使用します。

syslog |grep -i "Wake reason"

Enter キーを押すと、Mac OS X のシステム ログからの次のようなレポートが表示されます。

Sat Jul 10 08:49:33 MacBookPro kernel[0] : Wake reason = OHC1
Sat Jul 10 17:21:57 MacBookPro kernel[0] : Wake reason = PWRB
Sun Jul 11 08:34:20 MacBookPro kernel[0] : Wake reason = EHC2
Sun Jul 16 18:25:28 MacBookPro kernel[0] : Wake reason = OHC1

ここで、「Wake Reason=」というテキストの横にあるコードを確認しましょう。これは、コンピューターがスリープ状態から復帰した理由を知るのに役立ちます。では、これらのWake Reasonコードは一体何を意味するのでしょうか?

Mac OS X におけるウェイク理由コードとその意味

それぞれのカーネル デバッグ ウェイク理由コードとその内容について説明し、マシンがウェイクアップする原因を突き止めます。

  • OHC: Open Host Controller の略で、通常はUSBまたはFireWireです。OHC1またはOHC2と表示されている場合、ほぼ間違いなく外付けUSBキーボードまたはマウスがマシンを起動しています。
  • EHC : Enhanced Host Controller の略で、別の USB インターフェースですが、ワイヤレス デバイスや Bluetooth も Mac の USB バス上にあるため、これらにも使用できます。
  • USB : USBデバイスがマシンを起動しました
  • LID0 : これは文字通り MacBook または MacBook Pro の蓋です。蓋を開けるとマシンがスリープ状態から起動します。
  • PWRB : PWRBはPower Buttonの略で、Macの物理的な電源ボタンです。
  • RTC(リアルタイムクロックアラーム)は、Macの省エネルギーコントロールパネルでスリープとスリープ解除をスケジュール設定した場合など、オンデマンドのウェイクアップサービスから発生するのが一般的です。また、LaunchDの設定、ユーザーアプリケーション、バックアップ、その他のスケジュールされたイベントから発生する場合もあります。

PCI、GEGEなど、他にもコードがいくつかあるかもしれませんが、システムログで遭遇することが多いのは上記のコードです。これらのコードが分かれば、Macがスリープ状態からランダムに復帰する原因を絞り込むことができます。

注:コマンドラインに慣れていない場合は、コンソールでウェイク理由コードを監視することもできます。ただし、私の経験では、コンソールはターミナルよりも検索と操作に時間がかかります。これは通常、コンソールのデフォルトの文字列一致検索が、サードパーティのログも含め、すべてのシステムログとアプリケーションログを検索するためです。

Macがスリープ解除した原因を突き止めるのに、この方法は役に立ちましたか?他に同様の情報を見つけるためのヒントや提案があれば、ぜひ下のコメント欄で共有してください。そして、この素晴らしいヒントのアイデアを提供してくれたMattに感謝します!