top命令是Linux系统下的实时系统监控程序,可持续刷新并展示当前运行进程及系统整体资源使用状况,涵盖CPU负载、内存占用与系统运行时间等指标。该工具支持在终端内以交互方式管理进程,且系统统计数据会自动持续更新,无需中断或重新启动命令。
不带任何选项运行top会启动交互式监控界面。显示内容会自动刷新,并列出活动进程,同时展示CPU使用率、内存使用率、系统平均负载以及系统运行时间。按q键即可退出界面。

PID | 进程ID编号 |
USER | 进程的持有用户 |
PR | 进程运行的优先级,值越小优先级越高,会越早获得CPU的执行权 |
NI | 进程的nice值,表示进程可被执行的优先级的修正数值 |
VIRT | 进程使用的虚拟内存总大小,单位为KB |
RES | 进程使用的并且未被虚拟内存换出的物理内存大小(常驻内存),单位为KB |
SHR | 进程使用的共享内存大小,单位为KB |
S | 进程当前的运行状态:• D:不可中断的睡眠状态• R:运行中• S:休眠中• T:跟踪/停止• Z:僵死中(Zombie) |
%CPU | 进程运行时CPU的占用比 |
%MEM | 进程使用的内存占用比 |
TIME+ | 进程占用的CPU总时长 |
COMMAND | 正在运行的命令名称 |
top命令的输出分为多个部分,每个部分都包含有关系统性能和进程的具体信息。本节将依据所展示的信息,对输出内容进行逐段解析。
运行时间/摘要信息(Uptime/Summary)
首次运行top命令时,第一行(通常称为标题行或摘要行)会显示与uptime命令相似的信息。它展示以下内容:

System Time | 系统上的当前时间。 |
Uptime | 系统自上次启动以来持续运行的时长。 |
Users | 当前登录到系统的用户数量。 |
Load Average | 以三个逗号分隔的数字显示。这三个数值分别代表过去1分钟、5分钟和15分钟内,等待CPU时间的进程平均数量。数值1.0表示单核CPU处于完全满载状态;数值越高,表明系统越可能存在过载风险。 |
任务(Tasks)
任务部分提供了系统当前管理的所有进程的概览,并根据进程的状态对其进行分类。

total | 表示系统当前正在跟踪的进程总数。 |
running | 表示当前正在主动占用CPU时间的进程数量。 |
sleeping | 指当前处于空闲状态、等待信号唤醒的进程。 |
stopped | 表示已被手动停止的进程,通常是通过信号触发的。 |
zombie | 表示已完成执行但仍在进程表中保留条目的进程。 |
%CPU
%CPU行显示了CPU时间在不同类型任务之间的分配情况,有助于识别哪些活动正在消耗CPU资源。

us | 用户空间占用CPU的百分比(业务逻辑) |
sy | 内核空间占用CPU的百分比(系统调用) |
ni | 调整nice值(进程优先级)所占用的CPU百分比 |
id | 空闲CPU时间 |
wa | 等待IO的CPU时间(磁盘/网络等) |
hi | 硬件中断消耗的CPU时间 |
si | 软件中断消耗的CPU时间 |
st | 被虚拟机偷走的CPU时间(在虚拟化环境中常见) |
内存(MiB Mem)
MiB Mem行提供了系统物理内存(RAM)使用情况的详细信息,有助于了解内存如何被进程和系统分配和使用。

total | 可用物理内存总量 |
free | 空闲的内存 |
used | 已使用内存729MB |
buff/cache | 用于缓存文件和cache的内存为896.9MB |
交换区 (MiB Swap)
Swap部分显示了基于磁盘的内存使用情况,当RAM已满时,系统会使用这部分内存。

total | 交换内存总量,即RAM已满时使用的基于磁盘的内存 |
free | 未使用的交换内存 |
used | 当前正在使用的交换内存 |
avail Mem: | 可用内存总量,即空闲内存与缓冲内存之和 |
top是Linux/Unix系统中最常用的实时进程监控工具。以下是它的主要选项和用法分类:
单个CPU核心统计信息
按键盘上的1键可查看每个CPU核心的单独统计信息。重复按1键可切换核心统计视图的开启与关闭。

CPU使用图
如果你希望以图形方式展示CPU使用情况,top命令支持基础的ASCII图表,用以表示每个CPU核心的使用率。按t键可开启或关闭这些图表。

内存使用图
该命令还支持以图形方式显示内存和交换内存的使用情况。若要直观展示内存使用状况,请按m键;再次按m键即可隐藏这些行。

更改显示单位
按大写E键选择top中内存值所使用的单位。按小写e键选择进程列表视图中显示的单位。可用选项包括:kibibytes(KiB),mebibytes(MiB)gibibyte(GiB),tebibytes(TiB),pebibytes(PiB),exbibytes(EiB — 仅适用于内存值)当前正在使用的值是第四行和第五行的首项。在以下示例中,我们将仪表板内存单位设置为gibibytes,进程列表内存单位设置mebibytes。

按特定用户筛选进程
按特定用户筛选进程-u选项允许您显示特定用户的所有进程。在top运行时按u键,或在启动top时使用以下语法:按u键后,系统会提示输入用户名或用户ID(huihan)。

按PID监控特定进程
-p选项将显示范围限制为你通过进程ID(PID)指定的单个或多个进程。其他运行中的进程将不会显示。

显示进程命令行
若要查看完整的命令行而非仅显示进程名称,请按c键。再次按c键可切换回仅显示进程名称。

查看进程层次结构
若要查看哪些进程是由其他进程启动或派生的,请按V键。当你需要查看系统中父子进程的层次关系时,树状视图非常有用。

向进程发送信号
使用top命令可以向运行中的进程发送任何信号。按k键并输入进程PID,top会提示你输入要发送的信号编号。如果不输入特定信号,默认将发送终止信号(SIGTERM,信号15)来终止该进程。在这里,我们终止了PID为1667的stress-ng-vm进程。

更改进程优先级
top命令允许用户更改进程优先级(nice值)。运行top并按r键,
出现提示时,输入进程ID并按Enter键;输入PID后,程序会提示输入新的nice值,输入新值并按Enter键。
注意:负的nice值表示更高的进程优先级。
我们将某个stress-ng-vm实例的nice值设置为10:

top命令支持使用过滤表达式来限定列表中显示的进程。按o键激活过滤选项,程序会提示你输入过滤表达式。我们输入了以下过滤条件:%mem>5.0这表示仅显示内存占用超过5.0%的进程。

