top命令可快速定位cpu占用最高进程,默认按%cpu降序排列,pid和%cpu列最关键;ps aux --sort=-%cpu | head -10适用于静态筛选前10名;需结合top头部%cpu(s)行判断us/sy/wa等指标区分真实瓶颈。

直接用 top 命令就能快速定位 CPU 占用最高的进程,这是最常用、最有效的第一步。
用 top 实时查看并排序
在终端执行:
top
它会动态刷新显示所有进程的资源占用。默认按 CPU 使用率降序排列,排在最上面的就是当前最“吃”CPU 的进程。重点关注两列:
- PID:进程唯一编号,后续排查要用
- %CPU:该进程占用的 CPU 百分比(多核系统下可能超 100%)
运行中可按快捷键增强效率:
- 按 P:确保按 CPU 占用排序(默认就是,但可确认)
- 按 M:切换为按内存排序(辅助判断是否连带内存问题)
- 按 q:退出
用 ps 静态筛选前几名
如果只需要一次性结果(比如写脚本或导出日志),用 ps 更轻量:
ps aux --sort=-%cpu | head -10
这条命令会列出 CPU 占用前 10 的进程,字段清晰,含用户、PID、%CPU、%MEM 和完整命令行。适合快速扫一眼,也方便配合 grep 过滤特定服务,例如:
ps aux --sort=-%cpu | grep nginx
注意区分“高占用”是否真由进程引起
top 头部的 %Cpu(s) 行才是全局判断依据,别只盯着进程列表。重点看这几个字段:
- us(用户态)高 → 业务程序本身在忙(如 Java、Python 服务)
- sy(内核态)高 → 可能是系统调用频繁、驱动异常或内核线程问题
- wa(I/O 等待)高 → CPU 其实在等磁盘或网络,不是算力瓶颈,别误杀进程
- si/hi(软/硬中断)高 → 检查网卡、存储设备或中断风暴
如果 us 不高但整体 CPU 看似高,可能是多核不均衡——某个核心跑满,其余空闲,这时需用 mpstat -P ALL 1 查各核负载。
进阶:快速锁定高耗 CPU 的线程
很多问题不在进程级,而在某一线程。确认高 CPU 进程 PID 后,立即查它的线程:
top -H -p [PID]
这会以线程维度展示,同样按 CPU 排序。找到 TID(线程 ID)后,可进一步用 printf "%x\n" [TID] 转成十六进制,再结合 jstack [PID](Java 应用)分析具体代码栈。











