早上起来打开 MacBook,发现 Dock 上的应用全没了——系统似乎在夜里重启过。打开终端敲了一条命令,确认了我的猜测:
$ lastrebootshutdown|head-5reboot六9503:22shutdown六9503:22reboot二9103:53shutdown二9103:52reboot一83100:16凌晨 3 点 22 分,我的 Mac 自己关机又重启了。不是我操作的,也不是停电——电池一直插着电源。那到底是谁干的?
于是有了这篇排查记录。全文按「定位时间 → 查电源日志 → 排除崩溃 → 交叉验证 → 下结论」五步走,每一步都附上可直接复制的命令,方便你照着排查。
第一步:先确认发生了什么
任何排查的第一步,都是先把时间线拉出来。last命令是最快的入口:
# 查看重启和关机历史lastrebootshutdown|head-20输出非常直观:每一行一个事件,左边是类型(reboot/shutdown),右边是时间。
怎么读
- reboot 和 shutdown 时间挨得很近→ 系统重启了(正常或异常)
- 只有 reboot 没有 shutdown→ 可能是断电或强制重启
- shutdown 后很久才 reboot→ 主动关机后手动开机
从输出看,9月5日 03:22 关机紧接着 03:22 重启,说明是一次完整的重启过程。问题是:为什么?
第二步:深挖电源管理日志
macOS 有一个非常强大但很少有人用的工具——pmset。它的-g log参数能吐出一份极其详细的电源管理日志,精确到秒级。
# 查看完整电源管理日志pmset-glog# 只看特定时间段的日志pmset-glog|grep"2026-09-05 03:"输出很长,但只要盯着几个关键词看,很快就能找到线索。我直接跳转到 03:07 左右,发现了一连串有意思的记录:
03:07:37 triggersRestart 03:07:37 SoftwareUpdate.TonightActivityTrigger 03:07:38 RestartCountdownOperation 03:16:33 PrepareUpdate 03:20:53 屏幕短暂亮起(显示通知) 03:21:23 CountdownNotification 03:22:20 开始关机 03:22:41 系统重新启动链条非常完整:系统调度了重启 → 触发了夜间软件更新 → 开始倒计时 → 准备更新包 → 弹出通知 → 执行关机重启。
看到这里,答案其实已经出来了——就是 macOS 的夜间自动更新。但做排查要讲证据链,不能只靠一条线索就下结论。继续验证。
第三步:排除崩溃的可能
如果是系统崩溃导致的重启,性质就完全不一样了。所以下一步必须确认:这是正常重启,还是异常崩溃?
macOS 把所有诊断报告都存在一个固定目录里:
# 列出系统诊断报告ls-la/Library/Logs/DiagnosticReports/重点找三类文件:
| 文件类型 | 命名特征 | 说明 |
|---|---|---|
.panic | Kernel-YYYY-MM-DD-*.panic | 内核恐慌 → 系统崩溃,严重问题 |
.shutdownStall | shutdown_stall_*.shutdownStall | 关机卡顿 → 关机慢,但不是崩溃 |
.ips | AppName_*.ips | 单个应用崩溃 |
检查结果:没有 .panic 文件(好消息,不是系统崩溃),但有一个shutdown_stall_2026-09-05-032220文件。
什么是 shutdown stall
关机过程中某些进程退出较慢,导致总关机时间超过了系统预期阈值。系统会生成一份 spindump 报告用于分析,但这不是崩溃,只是"关机慢了点"。在自动更新重启时尤其常见——后台跑的进程多,自然关得慢。
第四步:交叉验证,锁定真相
单看一次事件可能是巧合。我翻了一下历史记录,发现了规律:
| 日期 | 时间 | 类型 | 共同点 |
|---|---|---|---|
| 8月31日 | 00:16 | shutdown_stall | 凌晨 · 自动更新重启 |
| 9月1日 | 03:53 | shutdown_stall | 凌晨 · 自动更新重启 |
| 9月5日 | 03:22 | shutdown_stall | 凌晨 · 自动更新重启 |
三次全部发生在凌晨,模式完全一致——都是 macOS 的夜间自动安装系统更新功能在工作。
最后再确认一下电池和硬件状态,排除电源因素:
循环计数:295状态: 正常 最大容量:82%
电池健康度 82%,循环 295 次,状态正常。电源方面没有问题。
结论:虚惊一场
最终结论很简单:这不是故障,是 macOS 在凌晨自动安装了系统更新并重启。关机过程稍微慢了一点(生成了 shutdown_stall 报告),但完全在正常范围内。
如果不想让系统在夜里偷偷重启,可以去系统设置 → 通用 → 软件更新 → 自动更新里关掉"安装 macOS 更新"。不过说实话,自动更新也没什么不好——至少说明你的系统在保持最新。
工具包:以后再遇到怎么办
把这次排查用到的命令整理成一张速查表,存好下次直接用。
🔍 Mac 关机原因排查五步走
- 定位时间点— 用
last reboot shutdown找到目标关机/重启时间 - 查看电源日志— 用
pmset -g log看关机前后的事件链,找 SoftwareUpdate、DarkWake 等关键词 - 排除崩溃— 检查
/Library/Logs/DiagnosticReports/有没有 .panic 文件 - 确认硬件— 用
system_profiler SPPowerDataType看电池和电源状态 - 交叉验证— 看历史记录有没有规律,比如每次都是凌晨 → 自动更新
常用命令速查
# 1. 关机/重启历史lastrebootshutdown|head-20# 2. 完整电源日志pmset-glog# 3. 查看关机原因代码log show--predicate'eventMessage contains "Previous shutdown cause"'--last7d# 4. 诊断报告目录ls-la/Library/Logs/DiagnosticReports/# 5. 电池和电源信息system_profiler SPPowerDataType pmset-gbatt# 6. 当前电源设置pmset-g小提示
pmset -g log的输出非常长,建议用grep过滤时间段或关键词,或者重定向到文件后慢慢看:pmset -g log > power_log.txt
最后说两句
其实 Mac 绝大多数"莫名其妙的重启"都不是硬件问题。系统更新、睡眠维护、第三方应用崩溃——这些才是最常见的原因。比起直接预约天才吧,先花十分钟在终端里敲几条命令,往往就能搞清楚状况。
当然,如果查到了 .panic 文件,或者多次出现不明原因的关机,那还是尽快送修比较稳妥。硬件故障这种事,越早发现越好。
希望这篇记录对你有用。下次 Mac 再"偷偷重启",不用慌,按步骤查就行。
技术笔记 · macOS 故障排查系列