Mac 总是从睡眠中自动唤醒怎么办?

用 macOS 自带的电源管理工具查明唤醒原因并彻底解决。

macOSmacOS睡眠监控pmset 电源管理电源与睡眠电池中风险
先查看电源管理事件日志,弄清最近几次唤醒的原因,再动手改设置。

快速开始

Mac 频繁自动唤醒,不仅夜间白白耗电,用起来也让人心烦。原因几乎总是可以查明的:日志会记录每次唤醒的具体原因,配合系统设置工具就能对症处理。本指南带你从诊断走到验证修复。

症状

?Mac 入睡几分钟后自行唤醒,或半夜自动醒来;无人操作时屏幕或风扇突然启动;每天早上电量明显下降。

查明是谁把 Mac 唤醒的

电源管理日志会记录每次睡眠和唤醒的原因——开盖、键盘输入、网络流量、蓝牙等等。查看最近二十条事件,找出反复出现的唤醒来源。如果每次都是同一个原因,那就是问题所在。

读取电源管理事件日志,弄清睡眠和唤醒原因:合盖、键盘、网络还是蓝牙。

命令
$ pmset -g log | grep -E "Entering Sleep|Wake from|DarkWake from" | tail -20

查看是什么在阻止或打断睡眠

应用程序可能持有电源断言(assertion),阻止睡眠或触发暗唤醒。断言列表会标明每个来源,方便你找出失控的应用、音频流或屏幕共享会话。关闭对应进程后,该断言应当消失。

列出所有电源断言——每个应用、音频流或屏幕共享阻止睡眠的具体原因。

命令
$ pmset -g assertions

查看当前的睡眠设置

先打印当前的电源配置——电池和充电器状态分别列出。留意网络唤醒选项以及过短或为零的睡眠定时器,这些都会让 Mac 容易被唤醒。记下这些数值,方便修复后对比。

pmset -g custom 会分别列出使用电池和电源适配器时 Mac 实际生效的睡眠与电源参数。

命令
$ pmset -g custom

设置合理的空闲睡眠时间

如果睡眠定时器太短或未设置,Mac 会在睡眠和唤醒之间频繁切换。设置一个明确的空闲睡眠阈值,并回读数值确认已生效。设为 0 会完全禁用系统睡眠——只有在明确需要时才这样做。

在命令行精确设定 Mac 空闲多少分钟后休眠,并随时读回当前值,适合批量管理。

命令
$ sudo systemsetup -setcomputersleep 15 && sudo systemsetup -getcomputersleep
▾ 撤销
撤销
$ sudo systemsetup -setcomputersleep 0

可选:让 Mac 在长任务期间保持唤醒

有时问题恰好相反:你需要 Mac 在下载或渲染期间保持唤醒,又不想改系统设置。caffeinate 可以在指定时间内抑制睡眠,结束后自动退出,不会留下任何后台进程。

caffeinate 可以在命令运行期间或指定时长内阻止 Mac 睡眠,适合挂机下载或演示时使用。

命令
$ caffeinate -d -t 3600

验证 Mac 能入睡且不再被唤醒

手动让 Mac 进入睡眠,静置一分钟左右。如果没有自行唤醒,再回到第一步重新查看唤醒日志:修复之后不应再出现新的、原因不明的唤醒记录。

pmset 自带两个一键命令:displaysleepnow 熄灭屏幕,sleepnow 让整台 Mac 立即进入睡眠。

命令
$ pmset displaysleepnow
!修改电源设置的命令需要 sudo 权限。把睡眠时间设为 0 会完全禁用系统睡眠,可能导致 Mac 发热或耗电——请仅在明确需要时使用。

如何确认已解决

修复后手动让 Mac 睡眠并静置。再次查看唤醒日志,不应出现新的、原因不明的唤醒记录。

一键全部撤销

上面每一条命令都可以撤销。按此顺序执行即可全部还原。

一键全部撤销
$ sudo systemsetup -setcomputersleep 0

执行前请先确认——部分步骤之间可能并非相互独立。

来源

  • systemsetup(8) man page
    manpagez.com · technical · 2026-09-17
    依据: The systemsetup man page describes -setcomputersleep as setting the system sleep amount in minutes and -getcomputersleep as displaying it.
  • caffeinate — prevent sleep (macOS man page)
    SS64 · technical · 2026-09-17
    依据: Documents flags -d (display), -i (system idle), -m (disk), -s (system) and -t seconds for a timed assertion.
  • pmset(1) man page
    Xcode Man Pages (keith.github.io) · technical · 2026-09-17
    依据: Lists `-g log` among the -g getter options: display the system power management log including sleep and wake entries with their reasons.
  • pmset - Power management settings
    SS64 · technical · 2026-09-17
    依据: Documents `pmset -g log`: 'Display a history of sleeps, wakes, and other power management events', noting the log is for admin and debugging purposes.
  • systemsetup - Set System Configuration Preferences
    SS64 · technical · 2026-09-17
    依据: Documents -setcomputersleep minutes (0 = never) and -getcomputersleep for reading the current idle-sleep timer.

最后验证: 2026-09-21

相关指南