菜鸟科技网

top命令实时监控哪些关键指标?

top 命令是 Linux/Unix 系统中一个常用的、动态的、交互式的进程查看工具,它能够实时地监控系统中最活跃的进程,并按 CPU、内存使用情况等进行排序,对于系统管理员和开发者来说,top 是排查性能问题(如 CPU 占用过高、内存泄漏)的首选工具之一。

top命令实时监控哪些关键指标?-图1
(图片来源网络,侵删)

top 命令的基本使用

基本语法

top [选项]

最简单的用法就是直接在终端输入 top,然后会进入一个全屏的交互式界面。

启动后的界面

启动 top 后,你会看到一个分为两大部分的界面:

  1. 上半部分(系统概要区):显示了系统的整体运行状态和资源使用情况。
  2. 下半部分(进程列表区):列出了当前系统中正在运行的各个进程的详细信息。

界面详解

系统概要区

这部分位于屏幕顶部,通常分为几行,我们以一个典型的输出为例来解析:

top - 10:30:15 up 10 days,  2:15,  1 user,  load average: 0.45, 0.32, 0.27
Tasks: 125 total,   1 running, 124 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.3 us,  1.2 sy,  0.0 ni, 92.8 id,  0.3 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  8171484 total,  3241568 free,  2123456 used,  2806460 buff/cache
KiB Swap: 2097148 total, 2097148 free,        0 used,  4548968 avail Mem

逐行解析:

top命令实时监控哪些关键指标?-图2
(图片来源网络,侵删)
  • 第一行:任务栏信息

    • top: 当前程序的名称。
    • 10:30:15: 当前系统时间。
    • up 10 days, 2:15: 系统已启动运行的时间。
    • 1 user: 当前登录系统的用户数。
    • load average: 0.45, 0.32, 0.27: 非常重要! 系统的平均负载。
      • 这三个数字分别代表过去 1 分钟、5 分钟、15 分钟的平均负载。
      • 解读:负载值表示正在运行和等待运行(不可中断状态)的进程总数,对于单核 CPU,负载值大于 1 表示系统已满负荷,对于 N 核 CPU,负载值超过 N 才算高负载,一个 4 核 CPU,1 分钟负载是 5,说明系统已经过载了。
  • 第二行:任务统计

    • Tasks: 125 total: 进程总数。
    • 1 running: 正在运行的进程数。
    • 124 sleeping: 处于睡眠(等待)状态的进程数。
    • 0 stopped: 已停止的进程数。
    • 0 zombie: 僵尸进程数。僵尸进程是已经终止但父进程尚未回收其资源的进程,少量存在是正常的,过多则需要关注。
  • 第三行:CPU 使用率

    • %Cpu(s): 显示的是所有 CPU 的整体使用情况。
    • 3 us (User space): 用户空间占用 CPU 的百分比,这是应用程序代码在用户空间执行所消耗的 CPU 时间。
    • 2 sy (System): 内核空间占用 CPU 的百分比,这是操作系统内核在处理系统调用、硬件中断等所消耗的 CPU 时间。
    • 0 ni (Nice): 通过 nice 值调整过优先级的进程占用 CPU 的百分比。
    • 8 id (Idle): CPU 处于空闲状态的时间百分比,如果这个值很高,说明 CPU 很空闲。
    • 3 wa (I/O Wait): CPU 等待 I/O(如磁盘读写、网络)操作完成所花费的时间百分比,如果这个值很高,说明 I/O 子系统可能存在瓶颈。
    • 0 hi (Hardware IRQ): 处理硬件中断所花费的 CPU 时间。
    • 1 si (Software IRQ): 处理软件中断所花费的 CPU 时间。
    • 0 st (Steal time): 在虚拟化环境中,虚拟机等待物理 CPU 的时间(被其他虚拟机“偷走”的时间)。
  • 第四行:内存信息

    top命令实时监控哪些关键指标?-图3
    (图片来源网络,侵删)
    • KiB Mem: 物理内存信息。
    • total: 总物理内存大小。
    • free: 空闲内存大小。
    • used: 已使用内存大小。
    • buff/cache: 用于 buffers 和 cache 的内存大小。注意:在现代 Linux 系统中,bufferscache 中的内存是可被回收的,当应用程序需要时,系统会立刻释放它们。free + buffers/cache 才是真正可用的内存。
  • 第五行:交换空间信息

    • KiB Swap: 交换分区(虚拟内存)信息。
    • total: 总交换空间大小。
    • free: 空闲交换空间大小。
    • used: 已使用交换空间大小。
    • avail Mem: 可用物理内存大小,这个值比 free 更准确,因为它也包含了可回收的 buffers/cache

进程列表区

这部分显示了各个进程的详细信息,列的含义如下(从左到右):

列名 含义
PID 进程 ID (Process ID),进程的唯一标识符。
USER 进程所有者的用户名。
PR 进程的优先级 (Priority)。
NI 进程的 nice 值,值越低,优先级越高。
VIRT 进程使用的虚拟内存总量 (Virtual memory size)。
RES 进程使用的、未被换出的物理内存大小 (Resident memory size)。
SHR 进程使用的共享内存大小 (Shared memory size)。
S 进程状态,常见状态有:R (Running), S (Sleeping), D (Uninterruptible Sleep), Z (Zombie), T (Stopped)。
%CPU 进程占用 CPU 的时间百分比。
%MEM 进程占用物理内存的百分比。
TIME+ 进程自启动以来占用的总 CPU 时间。
COMMAND 启动进程的命令或程序名。

top 的交互式命令

top 界面运行时,你可以按下一些键来执行特定操作,而无需退出 top

功能
q 退出 top
h 显示帮助信息。
M 按内存使用率(%MEM)降序排序,大写 M。
P 按 CPU 使用率(%CPU)降序排序,这是默认排序方式。
T 按 CPU 累计时间(TIME+)排序。
c 切换命令名和完整路径,在 COMMAND 列中,显示完整路径或仅显示程序名。
m 切换内存显示单位,在 KiB, MiB, GiB 之间切换。
t 切换 CPU 状态栏显示,显示/隐藏 CPU 各项状态。
l 切换负载平均信息显示,显示/隐藏第一行的负载信息。
t 切换进程和 CPU 状态栏,显示/隐藏进程列表和 CPU 状态栏。
s 修改刷新时间间隔,会提示输入一个新的秒数,默认是 3 秒。
k 终止一个进程,会提示输入要终止的进程 PID 和信号(默认是 15,SIGTERM)。
r 重新设置一个进程的优先级,会提示输入进程 PID 和 nice 值。
f 添加或删除列,进入一个交互式界面,可以选择要显示或隐藏的列。
o 改变列的顺序,可以拖动列来重新排列它们的显示顺序。
i 忽略闲置和僵死进程,在进程列表中不显示它们。
Z 设置颜色,可以为不同的元素设置颜色,使界面更易读。

实用技巧与实例

实例 1:找出占用 CPU 最高的进程

这是最常见的用法,直接启动 top,默认就是按 %CPU 排序的,列表最上面的就是最耗 CPU 的进程,如果它不是你期望的程序,可能就有问题了。

top
# 按 P 键确保是按 CPU 排序(默认就是)

实例 2:找出占用内存最多的进程

当你感觉系统卡顿,怀疑是内存不足时,这个方法非常有效。

top
# 按 M 键,按 %MEM 排序

查看 RES%MEM 列,找出那些占用内存异常高的进程。

实例 3:只查看某个用户的进程

有时你需要排查特定用户的问题。

top -u <username>
# top -u nginx

这会只显示 nginx 用户启动的进程。

实例 4:实时监控特定进程

你已经知道了一个有问题的进程的 PID,想持续观察它的状态。

top -p <pid1> -p <pid2>
# top -p 1234 -p 5678

这会只显示 PID 为 1234 和 5678 的进程信息。

实例 5:将 top 的结果保存到文件

有时你需要将某个时刻的系统状态保存下来进行分析。

# 使用 -b (batch) 和 -n (number of iterations) 选项
top -b -n 1 > top_output.txt
  • -b: 以批处理模式运行,不使用交互式界面,适合输出到文件或管道。
  • -n 1: 只刷新一次,然后退出。

top vs. htop

htoptop 的一个增强版,在功能性和用户体验上都有很大提升。

特性 top htop
界面 功能单一,信息密集 界面美观,彩色显示,更直观
交互 需要记忆按键 支持鼠标操作,菜单驱动
进程操作 终止进程 (k) 可以直接 F9 杀死进程,F7/F8 调整优先级
树形视图 (t 键),可以清晰地看到进程的父子关系,对排查问题非常有帮助
启动速度 稍慢,但功能强大
安装 通常预装 大多数发行版需要手动安装 (sudo apt install htopsudo yum install htop)

对于日常使用和快速排查问题,htop 是更好的选择,但 top 是系统基础工具,无处不在,了解其工作原理仍然非常重要。


top 命令是 Linux 系统监控的基石,掌握它,你就能快速洞察系统的健康状况:

  1. load average:判断系统整体负载是否过高。
  2. %Cpu(s):判断 CPU 是被用户程序 (us)、系统 (sy) 还是 I/O (wa) 占用了。
  3. MemSwap:判断物理内存和交换空间的使用情况。
  4. 看进程列表:结合排序,快速定位消耗资源最多的元凶进程 (PID)。

希望这份详细的解析能帮助你更好地理解和使用 top 命令!

分享:
扫描分享到社交APP
上一篇
下一篇