top命令
top 是 Linux/Unix 系统中最常用的 实时系统监控工具 ,能动态显示进程的 CPU 占用、内存使用、运行状态等核心信息,帮助排查系统负载高、响应慢等问题。其界面数据可分为 系统整体状态区 和 进程列表区 两部分,下面逐区域拆解每一项数据的含义(以 CentOS/Ubuntu 通用界面为例):
第一行:系统时间、运行时间、登录用户数、系统负载

| 字段 | 含义解释 |
|---|---|
10:29:23 |
当前系统时间 |
up 6:50 |
系统已运行时间(6 小时 50 分钟,未重启) |
1 users |
当前登录系统的用户数(包括本地终端、远程 SSH 登录等,可通过 who 命令查看具体用户) |
load average: 0.00, 0.00, 0.00 |
系统负载:分别代表过去 1 分钟、5 分钟、15 分钟的平均负载(核心指标)。⚠️ 关键判断:若负载值 ≈ CPU 核心数(如 4 核 CPU 负载≈4),表示 CPU 刚好满负荷;若长期 > CPU 核心数(如 4 核负载 > 8),则 CPU 严重过载。 |
第二行:进程统计(总进程数及状态分布)

| 字段 | 含义解释 |
|---|---|
201 total |
系统当前运行的 总进程数(包括所有状态的进程) |
1 running |
正在占用 CPU 运行的进程数(通常很少,若长期 > CPU 核心数,说明 CPU 竞争激烈) |
200 sleeping |
睡眠进程数(进程等待资源,如等待磁盘 IO、网络响应,不占用 CPU) |
0 stopped |
被暂停的进程数(如通过 kill -STOP 暂停的进程,需 kill -CONT 恢复) |
0 zombie |
僵尸进程数(进程已结束,但父进程未回收其资源,长期 > 0 需排查,避免内存泄漏) |
第三行:CPU 资源使用情况

| 字段 | 含义解释 |
|---|---|
us |
用户态 CPU 占比:用户进程(如 Java、Python 程序)占用的 CPU 资源(若过高,说明应用消耗 CPU 多) |
sy |
内核态 CPU 占比:系统内核(如进程调度、内存管理、IO 驱动)占用的 CPU 资源(若过高,可能是内核线程或驱动问题) |
ni |
优先级调整 CPU 占比 :通过 nice 命令调整过优先级的进程占用的 CPU(默认 0,很少用到) |
id |
空闲 CPU 占比(核心指标):数值越高,CPU 越空闲;若长期 < 10%,说明 CPU 资源紧张 |
wa |
IO 等待 CPU 占比:CPU 等待磁盘 / 网络 IO 完成的时间占比(若 > 5%,说明磁盘 / 网络 IO 瓶颈,CPU "没事干只能等") |
hi |
硬中断 CPU 占比:硬件中断(如键盘、网卡、磁盘控制器触发的中断)占用的 CPU(通常很低) |
si |
软中断 CPU 占比:软件中断(如内核信号、网络数据包处理)占用的 CPU(高并发网络场景可能升高) |
st |
虚拟化窃取 CPU 占比:虚拟机被宿主机 "偷走" 的 CPU 资源(仅虚拟化环境有,如 VM、Docker,若过高需向宿主机申请更多资源) |
第四行:物理内存(RAM)使用情况

| 字段 | 含义解释 |
|---|---|
total |
物理内存总大小(示例≈8GiB,8169856 KiB ÷ 1024 ÷ 1024 ≈8) |
free |
完全空闲的内存(未被任何进程或系统使用) |
used |
已使用的内存(包括进程占用、内核占用,但需结合 buff/cache 看实际压力) |
buff/cache |
缓存内存 :- buffer:用于缓存磁盘 IO 数据(如写文件时先存到 buffer,再批量写入磁盘);- cache:用于缓存读取过的文件内容(如反复读同一个日志文件,直接从 cache 取,避免重复读磁盘);关键:buff/cache 可被系统回收给新进程,所以 "实际空闲内存"≈free + buff/cache,若这个值低,才说明内存紧张。 |
第五行:交换内存(Swap)使用情况

| 字段 | 含义解释 |
|---|---|
total |
Swap 分区总大小(示例≈4GiB) |
free |
空闲的 Swap 空间 |
used |
已使用的 Swap 空间(若持续增长,说明物理内存不足,需警惕:Swap 基于硬盘,速度远慢于内存,会导致系统卡顿) |
avail Mem |
可立即分配给新进程的内存大小(≈free Mem + buff/cache 中可回收部分,更准确的 "可用内存" 指标) |
第六行:进程列表区

| 表头 | 含义解释 |
|---|---|
PID |
进程唯一 ID(核心标识,如通过 kill PID 终止进程) |
USER |
进程的所属用户(如 root 是系统用户,app 是应用用户,可判断是否有异常用户进程) |
PR |
进程的 静态优先级(由内核分配,用户无法修改,值越小优先级越高,通常为 20) |
NI |
进程的 ** nice 值 **(动态优先级,用户可通过 nice -n 数值 进程名 调整,范围 -20~19,值越小优先级越高) |
VIRT |
进程的 虚拟内存大小(包括进程代码、数据、共享库、Swap 中的数据,不代表实际占用内存,参考意义不大) |
RES |
进程的 物理内存占用大小(Resident Memory,核心指标!代表进程实际占用的物理内存,不包括 Swap 和共享库) |
SHR |
进程的 共享内存大小(Shared Memory,如多个进程共享的库文件、共享内存段,不计入单个进程的 "独占内存") |
S |
进程的 运行状态 (单个字母表示,核心判断依据):- R:Running(正在运行或等待 CPU);- S:Sleeping(睡眠,等待资源,如 IO);- D:Uninterruptible Sleep(不可中断睡眠,通常是等待磁盘 IO,不能用 kill 终止);- Z:Zombie(僵尸进程,需找父进程回收);- T:Stopped(被暂停,如 kill -STOP) |
%CPU |
进程的 CPU 占用率 (实时值,按 P 键可按此列排序,快速定位 "CPU 杀手") |
%MEM |
进程的 物理内存占用率 (按 M 键可按此列排序,快速定位 "内存大户") |
TIME+ |
进程从启动到现在的 总 CPU 占用时间 (精确到 0.01 秒,如 12:34.56 代表 12 分钟 34.56 秒,可判断进程是否长期占用 CPU) |
COMMAND |
进程的 启动命令 (如 java -jar app.jar、nginx,可按 c 键显示完整命令,排查异常进程) |
常用操作:
- 按
P:按 CPU 占用率 降序排序(默认排序,快速找高 CPU 进程); - 按
M:按 内存占用率 降序排序(找内存泄漏进程); - 按
T:按 CPU 总占用时间 排序(找长期消耗 CPU 的进程); - 按
k:输入 PID 并回车,可终止指定进程(需谨慎,避免误杀系统进程); - 按
1:显示 每个 CPU 核心的单独占用率 (如 4 核 CPU 会显示%Cpu0~%Cpu3,判断是否某核心过载); - 按
q:退出 top 命令。