linux top 命令输出结果含义详解
答案:top 输出分两段——顶部系统汇总(load average、CPU 时间构成 us/sy/wa、Mem/Swap)和下方进程表(PID、%CPU、%MEM、STAT、TIME+)。交互键:P 按 CPU 排序、M 按内存排序、1 展开多核。
一、顶部:系统汇总
text
top - 10:00:01 up 3 days, 2:11, 2 users, load average: 0.65, 0.42, 0.30
%Cpu(s): 12.5 us, 3.1 sy, 0.0 ni, 83.9 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7800.0 total, 2100.0 free, 3200.0 used, 2500.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used| 字段 | 含义 |
|---|---|
load average: a, b, c | 1 / 5 / 15 分钟平均负载(可运行 + 不可中断睡眠进程数) |
us / sy | 用户态 / 内核态 CPU 占比 |
ni | nice 调整过的低优先级用户态占比 |
id | 空闲占比 |
wa | IO 等待占比(CPU 等磁盘/网络) |
hi / si | 硬中断 / 软中断处理占比 |
st | 被虚拟机/宿主机偷走的时间(云环境常见) |
Mem / Swap | 内存总量、空闲、已用、缓冲缓存 |
二、下方:进程表
text
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 1.2g 240m 8.0m S 12.5 3.1 5:23.45 mysqld| 列 | 含义 |
|---|---|
PID | 进程号 |
PR / NI | 优先级 / nice 值 |
VIRT / RES / SHR | 虚拟内存 / 常驻内存 / 共享内存(KiB) |
S | 状态(R/S/D/Z/T,见下) |
%CPU | CPU 占用(未按核归一化,多核可超 100%) |
%MEM | 物理内存占比 |
TIME+ | 累计 CPU 时间(分:秒.百分秒) |
COMMAND | 命令名 |
STAT 状态字母:R=运行、S=可中断睡眠、D=不可中断睡眠(常因 IO)、Z=僵尸、T=停止、I=空闲内核线程。
三、常用交互键
| 按键 | 作用 |
|---|---|
P | 按 CPU 使用率降序 |
M | 按内存使用率降序 |
1 | 整体 CPU ↔ 逐核 CPU 切换 |
c | 显示完整命令行 |
k | 杀死进程(输入 PID) |
q | 退出 |
四、常见坑
- load average ≠ CPU 使用率:负载含 D 状态(等 IO)的进程,IO 阻塞也能拉高负载;
- %CPU 超过 100% 正常:多核未归一化;
- %CPU 是刷新周期平均:默认 3 秒,不是瞬时值;
ps aux的 %CPU 是生命周期均值:看瞬时用top或pidstat。
深度入口
- top 逐字段原理:top 工具指南
- 每核/进程统计:mpstat、pidstat
- 负载与使用率的区别:CPU 使用率怎么算
- 实时看更友好的替代:htop 命令详解
FAQ
Q: linux top 命令输出结果含义? A: 顶部是系统汇总(load average、CPU 时间构成、Mem/Swap),下方是进程表(PID、%CPU、%MEM、STAT、TIME+)。
Q: top 里 load average 怎么看? A: 1/5/15 分钟平均可运行+不可中断睡眠进程数;大于核数说明排队,趋势比单值重要。
Q: top 里 us/sy 分别代表什么? A: us=用户态,sy=内核态,id=空闲,wa=IO 等待,hi/si=硬/软中断,st=虚拟化偷走的时间。
Q: top 里 %CPU 超过 100% 正常吗? A: 正常,多核未归一化,2 核满负荷显示 200%。
Q: top 里 STAT 各字母什么意思? A: R=运行、S=可中断睡眠、D=不可中断睡眠、Z=僵尸、T=停止、I=空闲内核线程。
Q: top 怎么按 CPU 排序、怎么展开多核? A: 按 P 按 CPU 降序、M 按内存;按 1 切换逐核显示。
一句话总结:top 顶部看系统(load average、us/sy/wa、Mem/Swap),下方看进程(%CPU、STAT、TIME+),用 P/1 快速定位 CPU 占用高的进程;负载≠使用率、%CPU 可超 100% 是两个最常踩的坑。