Mac 发烫、CPU 占用过高:用终端排查并解决
通过一次性 CPU 快照、实时监控和磁盘/网络追踪找出让 Mac 过热的进程,修复常见原因并确认机身降温。
快速开始
Mac 机身烫手、风扇轰鸣,几乎总有一个进程在拼命干活。本指南带你从定位元凶,到修复最常见的可通过终端处理的原因,最后确认机器恢复凉爽。
症状
用一次性快照找出占用 CPU 的进程
Mac 发烫、风扇狂转时,第一步是搞清楚是哪个进程在吃 CPU。一次排序好的报告能立刻显示占用最高的进程,不用盯着实时刷新的界面。看到列表顶部有一两个进程的 CPU 百分比明显偏高,就说明定位到了嫌疑对象。
在完整进程列表中搜索可疑进程
有了嫌疑进程名后,在完整进程列表里确认它,并记下确切的 PID。这一步还能发现你可能漏掉的辅助进程或重复实例。如果搜到了包含进程名和 PID 的一行记录,就可以进入下一步。
用一个界面实时观察 CPU、内存和磁盘
如果一次性快照看不出问题——比如负载时有时无——实时监控能让你在负载飙升的瞬间看到是哪个进程在作怪,并和当时的操作对应起来。能复现发热并观察到对应进程的波动,就说明这一步达到了目的。
追踪高负载进程在磁盘上到底在做什么
占用 CPU 的进程往往在 doing 大量文件操作,比如索引或同步成千上万个文件。追踪它的文件活动能判断负载是正常工作,还是卡在某个文件夹里死循环。如果追踪结果显示该进程在持续读写文件,你就能据此判断这些活动是否合理。
实时观察磁盘上的每一次 open、write、stat 调用,并看到具体是哪个进程发起的。
$ sudo fs_usage -w -f filesys | grep -i Documents检查发热进程是否同时在大量收发网络数据
云同步客户端、备份代理和失控的更新检查常常同时表现为高 CPU 和持续的网络流量。一份按进程划分的网络报告能告诉你罪魁祸首是不是在不停地联网。如果流量最大的进程正是之前找到的那个 CPU 大户,原因就更清楚了。
阻止 Finder 在网络和 USB 磁盘上空转
如果追踪结果显示是 Finder 在不停地访问网络共享或 U 盘,隐藏的 .DS_Store 写入可能让磁盘和 CPU 一直不得空闲。关闭这些写入能消除这种空转。命令执行成功、且再次查看 CPU 快照时发现 Finder 不再持续占用,就说明生效了。
写入 DSDontWriteNetworkStores 与 DSDontWriteUSBStores,让访达不再在非本地卷创建 .DS_Store。
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true && defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true▾ 撤销
$ defaults delete com.apple.desktopservices DSDontWriteNetworkStores && defaults delete com.apple.desktopservices DSDontWriteUSBStores检查让 Mac 无法安静下来的睡眠与电源设置
如果 Mac 从不进入空闲状态,发热问题会更严重。查看当前的电源配置能发现是否有激进的唤醒设置或被禁用的睡眠让 CPU 全天运转。能读出设置内容并找出阻止正常睡眠的条目,这一步就完成了。
pmset -g custom 会分别列出使用电池和电源适配器时 Mac 实际生效的睡眠与电源参数。
$ pmset -g custom确认问题进程已经平静下来
退出或修复问题应用后,用它的 PID 再查一次该进程。占用大幅下降(或进程已不存在)就说明源头解决了。再跑一次 CPU 快照确认整体负载回落,机身温度会在几分钟内下降,风扇也会安静下来。
精确查看某个进程占用了多少物理内存,不必打开活动监视器。
$ ps -o pid,rss,comm -p <PID>如何确认已解决
用 PID 重新查看可疑进程,并再取一次 CPU 快照:占用应当明显下降,机身在几分钟内降温、风扇恢复安静。
一键全部撤销
上面每一条命令都可以撤销。按此顺序执行即可全部还原。
$ defaults delete com.apple.desktopservices DSDontWriteNetworkStores && defaults delete com.apple.desktopservices DSDontWriteUSBStores执行前请先确认——部分步骤之间可能并非相互独立。
来源
- top — display and update sorted information about processes (macOS)依据: The page documents -l for logging mode (one shot) and notes that -u is an alias equivalent to "-o cpu -O time", confirming -o cpu sorts by CPU usage.
- ps — process status (macOS)依据: The page documents the BSD flags that make up 'aux': -a (other users' processes), -u (user-oriented output with %CPU and %MEM), and -x (processes without a controlling terminal).
- macOS fs_usage — report system calls and page faults related to filesystem activity依据: Documents fs_usage's filesys filter, -w wide output and -f filter classes.
- top(1) man page依据: The synopsis shows -l <samples> ("Use logging mode and display <samples> samples") and -o <key> for the sort-order column, with cpu as a valid key.
- bottom documentation依据: Official bottom docs covering widgets and flags.
- nettop(1) — display network activity by process依据: Documents nettop -P aggregating traffic per process and -l 1 taking a single sample instead of an animated display.
- PS(1) — macOS man page依据: The BSD ps man page lists the -a, -u and -x options whose combination 'aux' shows every process on the system with CPU, memory and command columns.
- Homebrew formula: bottom依据: Installs bottom, which provides the btm binary.
最后验证: 2026-09-21