macOS内核崩溃记录存于统一日志和/Library/Logs/DiagnosticReports/,可用log show筛选panic及关机原因,结合jq或grep提取关键信息,并通过shutdown cause代码(如3=Kernel Panic)判断崩溃性质。
直接用终端命令查 macos 的历史内核崩溃自检记录,核心是读取系统自动生成的诊断报告,并筛选出与内核崩溃(kernel panic)相关的条目。这些记录不叫“自检”,而是由系统在每次异常关机、重启或内核崩溃后自动保存的 .panic 或 .diag 文件,存于统一日志数据库中。
查所有 Kernel Panic 报告文件列表
执行以下命令,列出所有已归档的内核崩溃报告(含 panic 和 shutdown 相关):
log show --predicate 'senderImagePath contains "kernel" && (eventMessage contains "panic" || eventMessage contains "shutdown cause")' --last 30d --style json | jq -r '.eventMessage' | grep -i -E "(panic|shutdown cause|previous shutdown cause)" | sort -u⚠️ 注意:需先安装 jq(用 brew install jq),否则可改用更轻量方式:
快速提取最近的关机原因代码
系统每次非正常关机都会记录一个十六进制关机码(如 -128、5、3),这是判断崩溃性质的关键依据:
输出示例:
EventMessage: Previous shutdown cause: 5
常见代码含义:
• 5:温度过高强制关机
• 3:内核不可恢复错误(典型 Kernel Panic)
• 128:电源意外断开
• -128:用户手动关机(非故障)
定位并查看完整的 panic 报告原文
系统实际把完整崩溃快照存在 /Library/Logs/DiagnosticReports/ 下,文件名含 kernel 或 panic,扩展名多为 .panic 或 .diag:
- 列出所有 panic 类报告:
ls -t /Library/Logs/DiagnosticReports/*.{panic,diag} 2>/dev/null - 查看最新一份的完整内容:
cat "$(ls -t /Library/Logs/DiagnosticReports/*.{panic,diag} 2>/dev/null | head -n1)" | head -n 100(只看前100行,避免大文件卡顿) - 若想确认是否真有 panic 记录,可检查是否存在该目录下的 kernel 相关文件:
ls /Library/Logs/DiagnosticReports/kernel_*.panic 2>/dev/null || echo "暂无 kernel panic 报告"
补充:结合时间范围精准回溯某次重启前后日志
如果你知道大致出问题的时间(比如 4月25号上午9:15左右重启过),可用时间窗口拉取上下文:
log show --start "2026-04-25 09:10:00" --end "2026-04-25 09:20:00" --predicate 'process == "kernel" || eventMessage contains "panic" || eventMessage contains "shutdown"' --info --debug这会显示那10分钟内所有内核级活动、错误提示和关机线索,比单纯翻报告更利于定位诱因(比如某驱动加载失败紧接 panic)。


















