top
是 Linux / 类 Unix 系统中最常用的实时系统监控工具,能够动态显示进程的资源使用情况(如 CPU、内存、IO 等),帮助用户快速定位系统负载过高、资源耗尽等问题。
一、基本用法
直接在终端输入 top
即可启动,默认每 3 秒刷新一次界面(可通过交互命令修改)。退出按 q
。
二、界面详解
top
界面分为两部分:系统信息摘要(顶部) 和 进程列表(底部)。
1. 系统信息摘要(顶部 5-6 行)
以典型输出为例:
plaintext
top - 14:35:22 up 10 days, 2:18, 3 users, load average: 0.65, 0.80, 0.72
Tasks: 289 total, 1 running, 288 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 92.5 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15987.5 total, 1234.2 free, 8765.3 used, 5988.0 buff/cache
MiB Swap: 2048.0 total, 1800.0 free, 248.0 used. 6543.1 avail Mem
第 1 行:系统整体状态
14:35:22
:当前系统时间up 10 days, 2:18
:系统运行时间(已开机 10 天 2 小时 18 分)3 users
:当前登录用户数(通过who
命令可查看具体用户)load average: 0.65, 0.80, 0.72
:系统负载平均值 (关键指标)- 含义:单位时间内等待 CPU 处理的进程数(含正在运行的进程)。
- 三个数值分别对应 1 分钟、5 分钟、15 分钟 的平均负载。
- 参考:若 CPU 核心数为 N,负载 <N 表示系统空闲;负载> N 表示进程需要排队等待 CPU。
第 2 行:进程总数统计
Tasks: 289 total
:总进程数1 running
:正在运行的进程数(占用 CPU)288 sleeping
:休眠进程数(等待事件,如 IO 完成)0 stopped
:暂停的进程(如被kill -STOP
暂停)0 zombie
:僵尸进程(已终止但父进程未回收资源)
第 3 行:CPU 使用率(关键指标)
以 %Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 92.5 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
为例:
us
(user):用户态进程占用 CPU 的比例(如应用程序)。sy
(system):内核态进程占用 CPU 的比例(如系统调用)。ni
(nice):调整过优先级(nice 值非 0)的用户态进程占用 CPU 的比例。id
(idle):CPU 空闲比例(若id
低且us/sy
高,可能 CPU 不足)。wa
(iowait):CPU 等待 IO 操作(如读写磁盘 / 网络)的时间比例(wa
高可能是 IO 瓶颈)。hi
(hardware irq):硬件中断占用 CPU 的比例(如键盘、网卡中断)。si
(software irq):软件中断占用 CPU 的比例(如内核调度)。st
(steal):虚拟化环境中,CPU 被宿主机 "偷走" 的时间比例(仅虚拟机可见)。
第 4-5 行:内存 / 交换分区(Swap)使用
以内存为例(MiB Mem
):
total
:总内存容量(物理内存)。used
:已使用的内存(含进程占用、内核缓存等)。free
:完全空闲的内存(未被任何进程 / 缓存使用)。buff/cache
:缓存(cache,如文件缓存)和缓冲区(buffer,如 IO 临时数据)占用的内存(可被内核回收复用)。avail Mem
(部分版本显示):可用内存(≈ free + 可回收的 buff/cache),更能反映系统实际可用内存。
2. 进程列表(底部)
默认显示系统中所有进程的资源使用情况,按 CPU 使用率降序排列。列含义如下:
列名 | 含义说明 |
---|---|
PID | 进程唯一 ID(可通过 kill PID 终止进程) |
USER | 进程所有者(用户名或 UID) |
PR | 进程优先级(数值越小优先级越高):- 实时优先级(-1 至 -99)- 普通优先级(0 至 139,默认 120) |
NI | Nice 值(优先级调整值):- 范围 -20(最高)至 19(最低)- PR = NI + 120(普通进程) |
VIRT | 进程使用的虚拟内存总量(含未使用的 swap、共享库等,不代表实际占用) |
RES | 进程使用的物理内存(不包含 swap,单位 KiB/MiB,是实际占用的物理内存) |
SHR | 进程使用的共享内存(含与其他进程共享的库、文件等,RES 包含 SHR) |
S | 进程状态:- R(Running,运行中)- S(Sleeping,休眠,可被唤醒)- D(Disk Sleep,不可中断休眠,通常等待 IO)- Z(Zombie,僵尸进程)- T(Stopped,暂停) |
%CPU | 进程占用 CPU 的比例(自上次刷新以来的平均值) |
%MEM | 进程占用物理内存的比例(RES / 总内存) |
TIME+ | 进程累计占用的 CPU 时间(精确到 0.01 秒) |
COMMAND | 进程启动命令(默认显示缩写,按 c 可切换完整命令) |
三、常用交互命令(启动 top
后输入)
top
支持动态操作,常用命令如下:
命令 | 功能说明 |
---|---|
P | 按 CPU 使用率 降序排序(默认) |
M | 按 内存使用率(% MEM) 降序排序 |
T | 按 累计 CPU 时间(TIME+) 降序排序 |
N | 按 PID 升序排序 |
k | 终止进程(输入后提示输入 PID,再输入信号量,默认 15(正常终止),9(强制终止)) |
r | 调整进程优先级(输入 PID 后,修改 Nice 值,范围 -20 至 19) |
c | 切换显示 完整命令 / 缩写命令 |
H | 切换显示 进程 / 线程(显示线程时,PID 列会显示线程 ID) |
1 | 切换显示 单个 CPU 总使用率 / 每个核心的使用率(多核系统有效) |
s | 修改刷新间隔(输入秒数,默认 3 秒) |
q | 退出 top |
f | 自定义显示列(按上下键选择列,按空格键切换是否显示,按回车确认) |
u | 过滤显示指定用户的进程(输入用户名或 UID) |
p | 过滤显示指定 PID 的进程(输入 PID,多个用逗号分隔) |
四、常用命令行参数(启动时指定)
参数 | 功能说明 |
---|---|
top -d N |
设置刷新间隔为 N 秒(如 top -d 5 每 5 秒刷新一次) |
top -p PID |
仅监控指定 PID 的进程(如 top -p 1234 监控 PID 为 1234 的进程) |
top -u user |
仅监控指定用户的进程(如 top -u root 只看 root 启动的进程) |
top -H |
启动时直接显示线程(相当于启动后按 H ) |
top -b |
批处理模式(非交互式,可输出到文件,如 top -b -n 1 > top.log 保存一次快照) |
五、注意事项
-
负载与 CPU 使用率的区别:负载反映 "等待 CPU 的进程数",CPU 使用率反映 "CPU 忙碌程度"。例如:IO 密集型任务(如大量读写磁盘)可能导致负载高,但 CPU 使用率低(因进程在等 IO)。
-
僵尸进程(Z) :若僵尸进程过多,可能是父进程未正确回收子进程资源,需检查父进程(通过
pstree -p PID
查看父进程)。 -
缓存(buff/cache) :
buff/cache
是内核为提高性能的缓存,并非 "已占用且不可用",系统内存不足时会自动释放,因此 "free 内存少" 不一定是内存不足(需看avail Mem
)。
通过 top
可快速定位系统瓶颈(CPU / 内存 / IO 问题),结合 iostat
(IO 监控)、free
(内存详情)等工具可更全面分析系统状态。