macos中不存在需用户手动排查的僵死进程,因launchd会毫秒级清理子进程状态;活动监视器中显示的“z”或多为刷新延迟、第三方工具干扰或瞬时伪状态;真正需关注的是高能耗、假死的后台进程。
macos 中并不存在需要用户手动排查的“僵死进程(zombie)”。所谓僵尸进程,是指子进程已终止、但父进程尚未调用 wait() 回收其退出状态时,在进程表中残留的临时条目。而在 macos 上,launchd(pid 1)会毫秒级接管并清理所有子进程的状态——你几乎不可能在活动监视器中稳定看到真正的 z 状态。
如果你在活动监视器里看到状态显示为 “Z” 或进程名带 <defunct></defunct>,那基本是以下情况之一:
- 活动监视器界面刷新延迟(按 ⌘+R 刷新即可消失)
- 第三方监控工具或内核扩展干扰了状态读取
- 极个别崩溃应用留下的瞬时伪状态(几秒内自动清除)
真正该关注的,不是“僵尸”,而是那些看似安静却持续拖慢系统、耗电、发热的顽固后台进程。
看“能源”标签页,找真实问题源
切换到活动监视器的“能源”标签页,点击“12 小时能耗”列排序:
- 重点关注长期显示“高”或“非常高”的非系统进程
- 右键 → “在访达中显示”,确认路径是否来自可疑应用(如含 helper、updater、sync、ad、miner 字样)
- 路径在 ~/Library/Application Support/ 或 /Library/LaunchAgents/ 下的,尤其值得检查
查“磁盘”与“网络”,识别卡住的假死进程
切换到“磁盘”或“网络”标签页,对 CPU 占用长期低于 0.5%、状态为 sleeping 且“响应性”显示“无响应”的进程交叉验证:
- 若磁盘读写和网络收发均为 0 B/s,但进程已运行数小时 → 可能卡在权限拒绝或 I/O 阻塞上
- 若“收到的数据”总量明显(≥1 MB),而当前速率恒为 0 → 很可能卡在 connect() 或 recvfrom() 等系统调用中
- 选中后右键 → “取样进程”,堆栈中高频出现 poll、kevent、select → 基本锁定为网络超时卡死
用终端快速验证,别信活动监视器的“Z”
打开终端,运行:
ps aux | grep -E 'Z|defunct'
正常情况下,这条命令不会输出任何结果。如果有输出,再执行:
ps -eo pid,ppid,stat,comm | grep 'Z'
——但现实中 macOS 用户极少遇到有效输出。真有,也多是瞬时状态,无需干预。
安全终止前,先尝试轻量干预
很多高资源占用并非进程本身故障,而是可缓解的临时行为:
- Safari / Chrome:清空缓存(Safari → 偏好设置 → 隐私 → 管理网站数据;Chrome → 设置 → 隐私与安全 → 清除浏览数据)
-
Spotlight(mds_stores):终端执行
sudo mdutil -a -i off && sudo mdutil -a -i on重置索引 - iCloud 同步(bird):暂断网络连接几秒,或重启 iCloud 设置
- Time Machine(backupd):检查外接硬盘是否休眠异常,或在“系统设置 → 通用 → 登录项”中临时禁用启动项
不复杂但容易忽略。











