确定 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"

这可能会揭示导致唤醒的直接进程或应用程序。或者,您可以运行以下命令,它也可能显示导致唤醒的进程,以及可能有助于发现系统唤醒原因的调试代码:

日志显示 |grep -i "唤醒请求"

对于 MacOS Sierra、Mojave、Catalina 和更新版本,使用新的日志系统,使用以下命令:

log show |grep -i “唤醒原因”

对于 MacOS El Capitan、Yosemite、Mavericks 和更早版本,使用传统的 syslog 命令:

syslog |grep -i "唤醒原因"

点击回车,然后您将在 Mac OS X 中看到来自系统日志的报告,可能类似于以下内容:

7 月 10 日星期六 08:49:33 MacBookPro 内核[0] <调试> : 唤醒原因 = OHC1
7 月 10 日星期六 17:21:57 MacBookPro 内核[0] <调试> : 唤醒原因 = PWRB
Sun Jul 11​​ 08:34:20 MacBookPro 内核[0] <调试> : 唤醒原因 = EHC2
Sun Jul 16 18:25:28 MacBookPro 内核[0] <调试> : 唤醒原因 = OHC1

现在您将要查看“Wake reason=”文本旁边的代码,这将有助于告诉您计算机从睡眠中醒来的原因。那么这些唤醒原因代码是什么意思呢?

唤醒原因代码及其在 Mac OS X 中的含义

我们将描述每个内核调试唤醒原因代码及其相关内容,引导您了解导致机器唤醒的原因。

  • OHC:代表Open Host Controller,通常是USB或Firewire。如果您看到 OHC1 或 OHC2,几乎可以肯定是外部 USB 键盘或鼠标唤醒了机器。
  • EHC:代表增强型主机控制器,是另一种 USB 接口,但也可以是无线设备和蓝牙,因为它们也在 Mac 的 USB 总线上。
  • USB:USB 设备唤醒机器
  • LID0:这实际上是 MacBook 或 MacBook Pro 的盖子,当您打开盖子时,机器会从睡眠中唤醒。
  • PWRB:PWRB代表电源按钮,是Mac上的物理电源按钮
  • RTC:实时时钟闹钟,通常来自按需唤醒服务,例如当您通过 Energy Saver 控制面板在 Mac 上安排睡眠和唤醒。它也可以来自启动设置、用户应用程序、备份和其他预定事件。

可能还有一些其他代码(如 PCI、GEGE 等),但以上是大多数人会在系统日志中遇到的代码。找到这些代码后,您就可以真正缩小导致 Mac 看似随机地从睡眠中唤醒的原因。

注意:如果您不习惯使用命令行,也可以通过查看控制台来监控唤醒原因代码。但是,根据我的经验,控制台的搜索和使用速度比终端慢。这通常是因为控制台中的默认字符串匹配搜索将查看您的所有系统和应用程序日志,包括来自第三方的日志。

您觉得这对追踪 Mac 从睡眠中醒来的原因有用吗?对于发现类似信息,您还有其他提示或建议吗?在下面的评论中与我们分享。并感谢 Matt 提供了这个绝妙的建议!