macOS系统服务异常停止时,统一日志系统自动记录,需通过控制台App筛选process: launchd或含“exited”“Terminated”“Killed”的Fault/Error日志,终端用log show命令精准提取,并结合.crash/.diag报告中的Exception Type和Termination Reason(如0xdead10cc)定位资源超限等根本原因。
macos 系统服务异常停止时,默认就会记录日志——它不依赖手动“开启记录”,而是由统一日志系统(unified logging)自动捕获所有进程的启动、崩溃、退出及错误事件。真正需要做的,不是“设置开启”,而是确保你能查到这些日志,并识别出服务异常终止的关键线索。
控制台App中快速定位服务中断日志
系统服务(如com.apple.WindowServer、com.apple.analyticsd等)崩溃或被强制终止时,会在控制台中标记为 红色 Fault 条目 或 黄色 Error 条目,并附带明确的终止原因。
- 打开“控制台” → 左侧选本机 → 顶部搜索栏输入:
process: launchd或eventMessage contains "exited" - 再叠加筛选:点击搜索框旁下拉箭头 → “信息类型” → 勾选 Fault 和 Error
- 关键字段关注:
-
Sender: 显示服务名(如com.apple.duetexpertd) -
Level:Fault表示进程非正常退出(如信号 9/KILL、信号 11/SEGV) -
Message: 常含Exited with code X、Terminated due to signal、Killed by watchdog等描述
-
终端命令精准提取服务退出记录
图形界面可能延迟或过滤部分条目,终端直读日志数据库更可靠:
# 查最近一次启动以来所有被 kill 或 crash 的系统服务 log show --predicate 'eventMessage contains "exited" OR eventMessage contains "Terminated" OR eventMessage contains "Killed"' --last boot | grep -i "com\.apple\|launchd" # 专门抓取因内存压力被watchdog终止的服务(常见于M系列芯片) log show --predicate 'eventMessage contains "Killed by watchdog"' --last 24h # 导出全部服务级错误供离线分析 log show --predicate '(subsystem beginswith "com.apple") AND (level >= error)' --last 7d > ~/Desktop/system_services_errors.txt
从崩溃报告中确认服务终止上下文
服务异常退出后,系统通常生成 .crash 或 .diag 文件:
- 在“控制台”左侧边栏点“报告” → 查找名称含
com.apple.xxx.crash或xxx-terminated的文件 - 双击打开 → 滚动到底部看
Exception Type(如EXC_CRASH (SIGKILL))、Termination Reason(如Namespace RUNNINGBOARD, Code 0xdead10cc表示被资源管理器终止) - 若看到
Code 0xdead10cc,说明该服务因 CPU/内存超限被系统主动杀掉,不是代码缺陷,需检查是否与其他进程争抢资源
验证服务当前状态与重启行为
日志只反映“已发生”,还需确认服务是否真处于停止状态:
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- 终端执行:
launchctl list | grep -v "0x" | grep -E "(com\.apple|some-service-name)"
输出中若第二列(PID)为
-,表示未运行;若为数字但后续频繁变为-,说明反复崩溃重启。 - 手动触发重启并观察日志:
sudo launchctl kickstart -k system/com.apple.some-service
紧接着回到控制台,用
level: fault实时监控是否立刻出现新 Fault 条目
不复杂但容易忽略

















