彻底搞懂 Linux 下的 top 命令:从界面字段到性能分析

【进阶运维必修课】彻底搞懂 Linux 下的 top 命令:从界面字段到性能分析

一、写在前面:为何 top 是 Linux 运维者的“必修课”?

在 Linux 系统中,有无数种方法可以获取系统运行状态,但当你面对一台正在CPU飙高、负载异常或内存吃紧的服务器时,你的第一反应是什么?

多数资深 Linux 运维的答案是:top

这是因为:

  • 它几乎在所有 Linux 发行版中都默认内置;
  • 它提供了一个实时更新的系统监控视图,涵盖 CPU、内存、负载、进程;
  • 它支持交互式排序、过滤、查找等操作,是现场排查问题的利器;
  • 相比 psvmstat 等工具,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 持续居高?
  • PRNI 是否是高优先级进程导致资源占满?

可按 P 排序,找到 PID,再用:

1
top -p 12345

锁定该进程详细监控。

图片

图片


六、top 不够用怎么办?推荐替代工具

  • htop:交互式更强,美观,有彩色,支持鼠标操作;

图片

  • atop:支持历史记录查看;
  • glances:支持Web UI,多指标融合展示;
  • dstat:适合性能统计导出;

七、结语:top 是你性能分析的入门门槛,不是终点

top 虽然是基础工具,但如果你真的理解了每个字段的意义与背后机制,你会发现:

  • 它能快速定位性能瓶颈;
  • 它能发现异常进程(如僵尸、OOM);
  • 它能作为线上紧急排障的第一步。

别小看一个命令行工具,它能给你生产环境“第一手证据”。

https://mp.weixin.qq.com/s/miNc1xU3U1IEeX55VN_heQ