linx top 指令使用
top
命令是 Linux 系统中最常用的实时性能监控工具之一。它提供了一个动态更新的视图,显示系统摘要信息以及当前正在运行的进程及其资源占用情况(CPU、内存、时间等)。
启动 top
直接在终端输入:
bash
top
结果:
bash
top - 08:16:30 up 3:20, 1 user, load average: 1.56, 0.81, 0.58
Tasks: 25 total, 2 running, 23 sleeping, 0 stopped, 0 zombie
%Cpu(s): 56.8 us, 11.5 sy, 0.0 ni, 29.9 id, 0.0 wa, 1.2 hi, 0.7 si, 0.0 st
MiB Mem : 1871.4 total, 901.8 free, 512.0 used, 457.6 buff/cache
MiB Swap: 4096.0 total, 3992.5 free, 103.5 used. 1214.6 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
96 root 20 0 1553120 196152 31220 S 1.0 10.2 3:52.88 node
214 root 20 0 3611444 86260 31140 S 0.7 4.5 7:44.04 node
8227 root 20 0 6144 1136 552 S 0.3 0.1 0:33.81 top
top
主界面
top
界面主要分为两部分:
1. 系统摘要信息区 (顶部几行):
bash
top - 08:16:30 up 3:20, 1 user, load average: 1.56, 0.81, 0.58
Tasks: 25 total, 2 running, 23 sleeping, 0 stopped, 0 zombie
%Cpu(s): 56.8 us, 11.5 sy, 0.0 ni, 29.9 id, 0.0 wa, 1.2 hi, 0.7 si, 0.0 st
MiB Mem : 1871.4 total, 901.8 free, 512.0 used, 457.6 buff/cache
MiB Swap: 4096.0 total, 3992.5 free, 103.5 used. 1214.6 avail Mem
- 第一行 (
top
标题行):top - HH:MM:SS
:当前时间。up DD:hh:mm
:系统已运行时间。X users
:当前登录的用户数。load average: 1min, 5min, 15min
:系统在过去1分钟、5分钟、15分钟的平均负载。理想情况下每个核心应小于1.0,但需结合CPU核心数判断。如有4核CPU,则负载小于4时通常表示不拥挤。
- 第二行 (任务统计行):
Tasks: XXX total
:进程总数。X running
:正在运行的进程数。XXX sleeping
:睡眠(等待事件)的进程数。X stopped
:已停止的进程数(通常由信号控制)。X zombie
:僵尸进程数(已终止但父进程未读取其退出状态的进程)。非0需关注。
- 第三行 (CPU 状态行):
%Cpu(s):
:显示所有CPU的总体使用率或每个核心的使用率(按1
键切换)。- 详细字段:
us, user
:用户空间进程占用CPU百分比(应用程序)。sy, system
:内核空间进程占用CPU百分比(系统调用、中断)。ni, nice
:调整过优先级的用户进程占用百分比。id, idle
:空闲CPU百分比。wa, iowait
:等待I/O操作完成的CPU百分比。高值可能表示I/O瓶颈。hi, hardware interrupt
:处理硬件中断占用的CPU。si, software interrupt
:处理软件中断占用的CPU。st, steal
:在虚拟化环境中,被hypervisor"偷走"用于其他虚拟机的CPU时间。
- 第四/五行 (内存使用行):
- 第四行:物理内存 (Mem)
total
:总物理内存大小。free
:未被使用的物理内存。used
:已使用的物理内存 (通常计算为total - free - buffers/cache
)。buff/cache
:被内核缓冲区和页面缓存使用的内存。这部分内存通常可以被应用程序快速回收。
- 第五行:交换空间 (Swap)
total
:总交换空间大小。free
:未被使用的交换空间。used
:已使用的交换空间。avail Mem
:可用内存估算值free + buffers/cache
的大致值。系统可以立即分配给进程使用的内存量。这是判断内存是否紧张的关键指标。
- 第四行:物理内存 (Mem)
进程列表区 动态列出进程信息
bash
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
96 root 20 0 1553120 196152 31220 S 1.0 10.2 3:52.88 node
214 root 20 0 3611444 86260 31140 S 0.7 4.5 7:44.04 node
8227 root 20 0 6144 1136 552 S 0.3 0.1 0:33.81 top
PID
:进程ID。USER
:进程所有者。PR
:进程优先级。NI
:Nice值(用户态优先级调整值,范围-20到19,负值表示更高优先级)。VIRT
:虚拟内存大小 (KB)。进程占用的虚拟地址空间总量,包括代码、数据、共享库、映射文件、交换出去的部分等。RES
:常驻内存大小 (KB) 。进程当前实际使用的、未被交换出去的物理内存。这是进程消耗的实际物理内存量,最关注此列。SHR
:共享内存大小 (KB)。该进程与其他进程共享的内存部分(如共享库)。S
:进程状态 。R
= Running / RunnableS
= Sleeping (通常)D
= Disk sleep (不可中断休眠,通常等待IO)Z
= ZombieT
= Stopped (by job control signal)t
= Stopped by debugger
%CPU
:进程自上次刷新以来占用的CPU百分比 (所有核心之和的百分比)。例如,100%表示该进程完全占用了一个CPU核心。如果是多核系统,可以超过100%。%MEM
:进程当前使用的物理内存占总内存的百分比 (RES / total Mem
的比值)。TIME+
:进程自启动以来消耗的总CPU时间(精确到0.01秒)。COMMAND
:启动进程的命令行名称或完整路径(取决c
键状态) 。按c
键切换显示程序名或完整命令行。
top
交互命令
top
的强大之处在于其丰富的运行时控制命令:
- 排序 (非常重要):
P
(默认 ):按%CPU
(降序)。M
:按%MEM
(降序)。T
:按TIME+
(降序)。N
:按PID
(升序)。R
:切换排序顺序 (升序/降序)。
- 显示切换:
1
(数字一):在CPU总体视图和各核心视图之间切换。查看特定核心负载非常有用。t
:切换顶部摘要信息区中 Tasks/Cpu/Mem 的图形条显示。m
:切换内存区域 (Mem/Swap) 图形条显示。c
:切换COMMAND
列显示程序名或完整命令行。V
:切换到树状视图 (显示进程层次关系)。b
:高亮显示正在运行 (R
状态) 的进程。
- 进程操作:
k
:终止进程。输入PID (或按上下键选中),然后输入信号 (默认15/SIGTERM,强制结束用9/SIGKILL)。r
:更改进程优先级 (renice)。输入PID (或按上下键选中),然后输入Nice值 (-20到19)。
- 查找/过滤:
L
:按字符串过滤/高亮显示进程 (COMMAND
,USER
等)。输入字符串后只显示匹配行,高亮匹配项。再按一次退出过滤,再次按退出高亮。u
或U
:按用户名过滤进程 。u
然后输入用户名仅显示该用户进程。U
清除用户过滤。o
/O
:设置高级过滤器 (基于列的复杂条件,例如%CPU>10.0
)。语法较复杂,可按?
查看帮助,或=
清除所有过滤。
- 刷新与退出:
h
或?
:显示帮助信息。d
或s
:设置刷新间隔秒数 (默认3秒)。输入新值,如1
为1秒刷新一次。W
:保存当前配置到~/.toprc
。下次启动top
时会自动加载这些个性化设置(如列显示、排序等)。q
:退出top
。<Space>
:立即刷新。
- 列管理:
f
:进入字段管理界面 。可以选择显示/隐藏哪些列 (*
号表示显示),以及更改列的排序顺序 (按>
或<
移动选中列)。按d
或<Space>
切换选中列的显示,按s
可设置选中列为排序主键 (替代P
,M
,T
快捷键,需按q
返回)。按q
退出字段管理。F
:切换到选择排序字段界面(类似f
,但主要关注排序)。
常用指令选项
设置刷新间隔
bash
# top -d [sec]
top -d 1
仅监视指定的进程ID
bash
# top -p PID1[, PID2, ...]
top -p 1234
top -p 1234,1235
监控特定用户进程
bash
# top -u [user]
top -u root
查看特定核心负载
启动 top
后直接按 1
,从CPU总体视图 切换 各核心视图。
快速定位CPU瓶颈
启动 top
后直接按 P
(大写),看哪个进程占用率高,按 %CPU
(降序)。
快速定位内存瓶颈
启动 top
后直接按 M
(大写),看哪个进程占用率高,按 %MEM
(降序)。
监控特定COMMAND进程
以 bash 作为示例:
- 启动
top
后直接按O
(大写),进入 筛选条件设置。
bash
%Cpu(s): 2.4 us, 1.5 sy, 0.0 ni, 95.1 id, 0.0 wa, 0.7 hi, 0.2 si, 0.0 st
MiB Mem : 1871.4 total, 166.4 free, 1296.2 used, 408.8 buff/cache
MiB Swap: 4096.0 total, 3992.0 free, 104.0 used. 430.1 avail Mem
add filter #1 (case sensitive) as: [!]FLD?VAL
- 在提示符 Add filter #1 as: [!]FLD?VAL 后输入:
COMMAND=bash
,回车确认 。
bash
%Cpu(s): 2.4 us, 1.5 sy, 0.0 ni, 95.1 id, 0.0 wa, 0.7 hi, 0.2 si, 0.0 st
MiB Mem : 1871.4 total, 166.4 free, 1296.2 used, 408.8 buff/cache
MiB Swap: 4096.0 total, 3992.0 free, 104.0 used. 430.1 avail Mem
add filter #1 (case sensitive) as: [!]FLD?VAL COMMAND=bash
- 显示结果
bash
top - 06:30:05 up 6 days, 1:33, 1 user, load average: 0.02, 0.09, 0.12
Tasks: 16 total, 1 running, 15 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 0.7 sy, 0.0 ni, 96.2 id, 0.0 wa, 0.7 hi, 0.2 si, 0.0 st
MiB Mem : 1871.4 total, 114.1 free, 1378.9 used, 378.4 buff/cache
MiB Swap: 4096.0 total, 3992.0 free, 104.0 used. 347.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1284066 root 20 0 4380 2684 1968 S 0.0 0.1 0:00.02 bash
1284189 root 20 0 4380 768 184 S 0.0 0.0 0:00.00 bash