macos不记录后台进程cpu峰值,但可通过活动监视器、终端命令(如top/ps)、自定义脚本实现监测:①活动监视器快速识别持续高cpu进程;②终端命令实时筛查异常;③脚本自动记录指定进程峰值;④脚本捕获全系统瞬时最高cpu进程。
macos 本身不记录后台进程的 cpu 占用峰值,但你可以通过系统自带工具和轻量脚本实现持续监测与峰值捕获。关键在于区分两种需求:一是追踪某个特定进程(如 chrome、mds_stores)的历史最高 cpu 值;二是抓取全系统瞬时占用最高的进程(比如偶发卡顿时谁在“抢”cpu)。
用活动监视器快速识别当前高 CPU 进程
这是最直接、无需命令行的方法,适合日常排查:
- 打开“访达”→“前往”→“实用工具”,启动“活动监视器”
- 点按顶部标签栏的CPU,再点击% CPU列标题(确保箭头朝下,即降序排列)
- 重点关注连续 30 秒以上稳定高于 60% 的进程;若多个进程合计超 90%,说明系统整体负载偏高
- 右键列标题可勾选“PID”“用户”“启动时间”等字段,帮助判断进程归属(例如 root 用户项多为系统守护进程,com.apple. 开头的是 macOS 自带服务)
用终端命令实时筛查异常进程
当界面卡顿或需批量分析时,终端更可靠且支持阈值过滤:
- 运行 top -o cpu -s 5:每 5 秒刷新一次,按 CPU 降序排列;观察 COMMAND 列右侧的 %CPU 数值
- 快速筛选长期超标者:sudo ps aux | awk '$3 > 50 {print $1, $2, $3, $11}'(列出 CPU >50% 的进程,含用户名、PID、占用率、命令名)
- 查某进程完整路径:ps -p [PID] -o pid,ppid,comm,command(把 [PID] 换成实际数字)
- 检查是否被内核扩展拖累:kextstat | grep -v com.apple,留意非苹果签名的扩展(如 com.intego.*、com.bitdefender.*),它们常引发隐性 CPU 升高
脚本自动记录单个进程的 CPU 峰值
适用于长期监控某个已知后台程序(比如 coreaudiod、Google Chrome Helper)曾达到过的最高负载:
- 新建脚本 track_cpu_peak.sh,内容如下(以 Chrome 为例):
#!/bin/zsh
PROCESS_NAME="Chrome"
LOG_FILE="/tmp/${PROCESS_NAME}_cpu_peak.log"
PEAK=0
echo "$(date): Start tracking CPU peak for $PROCESS_NAME" > $LOG_FILE
while true; do
CURRENT=$(ps aux | grep -i "$PROCESS_NAME" | grep -v "grep" | awk '{print $3}' | sort -nr | head -1 2>/dev/null)
if [[ -n "$CURRENT" ]] && (( $(echo "$CURRENT > $PEAK" | bc -l) )); then
PEAK=$CURRENT
echo "$(date '+%Y-%m-%d %H:%M:%S'): New peak CPU = ${PEAK}%" >> $LOG_FILE
fi
sleep 2
done
- 赋予执行权限:chmod +x track_cpu_peak.sh
- 后台运行:nohup ./track_cpu_peak.sh &
- 查看记录:tail -f /tmp/Chrome_cpu_peak.log
捕获全系统瞬时 CPU 最高进程并存档
适合定位偶发性卡顿根源——不是看“谁一直高”,而是抓“谁突然爆表”:
- 脚本核心逻辑:用 top -l 1 -o cpu -s 0 获取单次快照,提取首条真实进程行(跳过标题和 idle)
- 设定触发阈值(如 >60%),满足即记录时间、PID、进程名和具体数值到日志
- 日志示例:2026-07-07 19:15:22 PID:12345 NAME:mdworker CPU:82.3%
- 配合 launchd 可开机自启,实现无人值守监控











