在Linux系统中,监控和管理服务器CPU资源是系统管理员的核心任务之一,通过命令行工具,可以实时获取CPU使用率、负载情况、核心数量等关键信息,从而及时发现性能瓶颈或异常进程,以下是常用的CPU查看方法及详细解析。

基础命令:top与htop
top是最经典的进程监控工具,默认按CPU使用率排序,动态显示进程信息,执行top后,首部区域会展示整体CPU状态:
%us:用户空间占用CPU百分比%sy:内核空间占用CPU百分比%id:空闲CPU百分比%wa:等待I/O的CPU百分比%st:虚拟机占用物理CPU的百分比(若存在)
若%us和%sy持续超过80%,而%id低于20%,说明CPU负载较高,通过top的交互命令,可按P(CPU排序)、M(内存排序)或k(终止进程)进行操作。
htop是top的增强版,支持彩色显示、进程树可视化及鼠标操作,安装后直接执行htop即可获得更直观的界面。
静态信息查看:lscpu与/proc/cpuinfo
若需获取CPU的静态配置信息,可使用lscpu命令,该命令会输出CPU架构、核心数、线程数、最大频率等详细信息,

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8 # 逻辑核心数
On-line CPU(s) list: 0-7
Thread(s) per core: 2 # 每个核心的线程数
Core(s) per socket: 4 # 每个插槽的核心数
Socket(s): 1 # CPU插槽数量
更底层的信息可通过cat /proc/cpuinfo查看,该文件包含每个逻辑核心的详细参数,如型号、缓存大小、指令集支持等。
负载监控:uptime与w
uptime命令显示系统运行时间及平均负载值(1分钟、5分钟、15分钟)。
15:30:00 up 10 days, 3:45, 2 users, load average: 1.5, 1.2, 0.8
负载值应与CPU核心数对比,若核心数为8,1分钟负载1.5表示CPU负载较低(1.5<8),但若持续超过核心数,则可能存在性能问题。w命令类似,还包含当前用户及进程数信息。
多核CPU监控:mpstat
mpstat属于sysstat工具包,需安装后使用,通过mpstat -P ALL 1可查看每个核心的独立CPU使用率,

Linux 5.4.0-91-generic (server) 10/15/2025 _x86_64_ (8 CPU)
15:30:01 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
15:30:01 all 15.2 0.1 8.3 2.1 0.0 0.2 0.0 0.0 0.0 74.1
15:30:01 0 12.3 0.0 7.5 1.8 0.0 0.1 0.0 0.0 0.0 78.3
15:30:01 1 18.1 0.2 9.2 2.5 0.0 0.3 0.0 0.0 0.0 69.7
通过对比各核心的%usr和%sys,可定位是否存在核心负载不均的情况(如某个核心持续高负载)。
进程级CPU分析:ps与pidstat
若需定位具体高CPU占用进程,可使用ps -eo pid,ppid,cmd,%cpu --sort=-%cpu,按CPU使用率降序排列进程,更精细的分析可通过pidstat -p <PID> 1实现,
15:30:01 PID %usr %system %guest %CPU Command
15:30:01 1234 45.2 12.1 0.0 57.3 java
若发现异常进程(如非业务程序占用高CPU),可结合strace或gdb进一步分析。
CPU性能计数器:perf
对于深度性能分析,perf工具可提供硬件级别的CPU事件统计,如缓存命中率、分支预测失败等。perf top可实时显示占用CPU最多的函数,perf record -g ./app后通过perf report生成火焰图,定位代码瓶颈。
表格总结常用命令
| 命令 | 功能描述 | 示例参数 | 输出示例关键信息 |
|---|---|---|---|
top |
动态进程监控 | -d 5(刷新间隔5秒) |
%us, %sy, 进程CPU占用 |
htop |
增强版进程监控 | -u username |
彩色进程树,实时负载曲线 |
lscpu |
CPU静态信息 | -e(显示扩展信息) |
核心数、线程数、最大频率 |
uptime |
系统负载与运行时间 | 无 | load average: 1.5, 1.2, 0.8 |
mpstat |
多核CPU使用率 | -P ALL 1 |
各核心%usr, %sys |
ps |
进程状态与CPU占用 | -eo pid,%cpu --sort |
进程PID及CPU百分比 |
pidstat |
进程级CPU统计 | -p 1234 1 |
进程详细CPU使用分解 |
perf |
CPU性能事件分析 | top |
热点函数、硬件事件计数 |
相关问答FAQs
Q1: 如何判断服务器CPU是否过载?
A1: 综合多个指标判断:①uptime中15分钟负载持续超过CPU核心数;②top或htop中%us+%sy超过80%且%id低于20%持续5分钟以上;③mpstat显示单个核心负载超过90%,同时需结合I/O等待(%wa)判断是否为CPU瓶颈或磁盘瓶颈。
Q2: 发现某个进程CPU占用100%,如何进一步排查?
A2: 可分三步处理:①用ps -ef | grep <PID>确认进程身份及启动命令;②通过strace -p <PID>跟踪系统调用,定位卡顿点;③若为Java/Python等进程,使用jstack或py-spy生成线程堆栈,分析死锁或无限循环,若为恶意进程,立即终止并查杀。
