彻底搞懂 Linux 下的 top 命令:从界面字段到性能分析
彻底搞懂 Linux 下的 top 命令:从界面字段到性能分析
ZhangCurry【进阶运维必修课】彻底搞懂 Linux 下的 top 命令:从界面字段到性能分析
一、写在前面:为何 top 是 Linux 运维者的“必修课”?
在 Linux 系统中,有无数种方法可以获取系统运行状态,但当你面对一台正在CPU飙高、负载异常或内存吃紧的服务器时,你的第一反应是什么?
多数资深 Linux 运维的答案是:top
这是因为:
- 它几乎在所有 Linux 发行版中都默认内置;
- 它提供了一个实时更新的系统监控视图,涵盖 CPU、内存、负载、进程;
- 它支持交互式排序、过滤、查找等操作,是现场排查问题的利器;
- 相比
ps、vmstat等工具,top更加“所见即所得”。
二、如何启动 top 命令?
1 | top |
也可以带上选项使用,如:
1 | top -d 2 -n 10 |
含义:
-d 2:每2秒刷新一次;-n 10:仅更新10次后退出;
三、界面结构全解:top 到底显示了什么?
top 输出可以分为两大区域:
1. 系统总体概况(前5行)
第一行(系统时间和负载):
1 | top - 22:14:03 up 5 days, 3:04, 3 users, load average: 1.23, 0.92, 0.65 |
22:14:03:当前系统时间;up 5 days, 3:04:系统已运行5天3小时;3 users:当前登录用户数;load average:系统平均负载(1分钟,5分钟,15分钟);- 通常小于 CPU 核心数就算健康。
第二行(任务数量):
1 | Tasks: 210 total, 1 running, 198 sleeping, 0 stopped, 1 zombie |
total:总进程数;running:正在运行的进程数;sleeping:睡眠/等待状态进程;zombie:僵尸进程,建议关注。
第三行(CPU 使用率):
1 | %Cpu(s): 5.3 us, 1.2 sy, 0.0 ni, 93.3 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st |
us:用户空间占用CPU百分比(程序计算);sy:内核空间占用;ni:低优先级进程(nice)占用;id:空闲时间(越高越好);wa:I/O等待时间;hi/si:硬中断/软中断;st:虚拟化偷取时间(用于KVM/Xen环境);
第四行(内存信息):
1 | MiB Mem : 15924.4 total, 1183.0 free, 7521.0 used, 5220.4 buff/cache |
total:总物理内存;free:未使用的内存;used:已使用内存;buff/cache:缓存占用(非真正“消耗”);
第五行(Swap信息):
1 | MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 6123.1 avail Mem |
Swap总量、已用、剩余;avail Mem:应用程序实际可用内存估算(不等于 free)
2. 进程列表(从第7行开始)
字段详解如下(默认排序字段为 %CPU):
| 字段名 | 含义 | 说明 |
|---|---|---|
PID |
进程ID | 唯一标识 |
USER |
所属用户 | 提示是否为root/服务用户等 |
PR |
优先级 | 数字越小优先级越高 |
NI |
nice值 | 越小代表越高优先级 |
VIRT |
虚拟内存 | 包括Swap、映射文件等 |
RES |
常驻内存 | 实际物理内存使用量 |
SHR |
共享内存 | 和其他进程共享部分 |
S |
状态 | R(运行),S(睡眠),Z(僵尸)等 |
%CPU |
CPU占用 | 排查 CPU 异常进程关键字段 |
%MEM |
内存占用 | 排查内存泄露进程 |
TIME+ |
累计CPU时间 | 表示CPU总时间,单位1/100秒 |
COMMAND |
启动命令 | 最直观查看进程来源 |
四、交互命令详解:top 不只是“看”
在 top 界面中输入以下按键,即可触发对应交互操作:
| 按键 | 功能 |
|---|---|
P |
按CPU排序(默认) |
M |
按内存排序 |
T |
按运行时间排序 |
k |
杀进程(会提示输入PID) |
r |
重新设定进程的优先级 |
h |
帮助(显示所有快捷键) |
q |
退出 |
1 |
显示每个CPU核心使用情况 |
f |
自定义显示字段 |
u |
只显示某个用户的进程 |
进阶用法如:
- 输入
u nginx只看 nginx 用户的进程 - 输入
k 1234杀掉指定PID
按照内存排序如下所示
过滤指定用户的进程如下所示
杀掉指定PID进程如下所示
五、实战案例:CPU飙高了怎么办?
当你发现 CPU load 突然升高:
1 | top -d 1 |
观察:
%Cpu(s): us是否过高(应用计算过多)?- 某个进程是否
%CPU持续居高? PR和NI是否是高优先级进程导致资源占满?
可按 P 排序,找到 PID,再用:
1 | top -p 12345 |
锁定该进程详细监控。
六、top 不够用怎么办?推荐替代工具
htop:交互式更强,美观,有彩色,支持鼠标操作;
atop:支持历史记录查看;glances:支持Web UI,多指标融合展示;dstat:适合性能统计导出;
七、结语:top 是你性能分析的入门门槛,不是终点
top 虽然是基础工具,但如果你真的理解了每个字段的意义与背后机制,你会发现:
- 它能快速定位性能瓶颈;
- 它能发现异常进程(如僵尸、OOM);
- 它能作为线上紧急排障的第一步。
别小看一个命令行工具,它能给你生产环境“第一手证据”。



