top
是 Linux 和类 Unix 系统中用于动态显示系统运行信息的命令行工具,它可以实时监控系统的进程活动和系统资源使用情况,如 CPU 使用率、内存使用情况、任务状态等。top
是系统管理员和开发人员用来排查性能问题的一个重要工具。
基本用法
运行 top
命令:
- 默认情况下,
top
会持续刷新系统状态(通常每 3 秒刷新一次),显示系统的资源使用情况和当前运行的进程。
界面解析
top
命令启动后,默认显示如下内容(可能因系统不同稍有差异):
系统整体信息(顶部摘要部分)
顶部摘要部分显示系统的全局信息,包含以下字段:
第一行:任务时间和系统负载
1
| top - 10:05:32 up 2 days, 3:45, 3 users, load average: 0.10, 0.20, 0.15
|
- 10:05:32:当前系统时间。
- up 2 days, 3:45:系统已运行时间,格式为“天、小时:分钟”。
- 3 users:当前登录的用户数量。
- load average:系统负载平均值,分别为过去 1 分钟、5 分钟、15 分钟 的平均负载值。接近或高于 CPU 核心数可能表示系统过载。
第二行:任务信息
1
| Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
|
- 120 total:系统中总共的任务(进程)数。
- 1 running:正在运行的任务数。
- 119 sleeping:处于“休眠”状态的任务数。
- 0 stopped:停止的任务数。
- 0 zombie:僵尸进程数。
第三行:CPU 使用情况
1
| %Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
|
- us(user):用户空间占用的 CPU 百分比。
- sy(system):内核空间占用的 CPU 百分比。
- ni(nice):被调整优先级的进程占用的 CPU 百分比。
- id(idle):空闲 CPU 百分比。
- wa(IO wait):等待 I/O 操作完成占用的 CPU 百分比。
- hi(hardware interrupts):硬件中断占用的 CPU 百分比。
- si(software interrupts):软件中断占用的 CPU 百分比。
- st(steal):虚拟机环境中被其他虚拟机占用的 CPU 百分比。
第四行:内存使用情况
1
| MiB Mem : 8000.0 total, 3000.0 free, 2500.0 used, 2500.0 buff/cache
|
- total:总物理内存大小。
- free:未被使用的内存大小。
- used:已使用的内存大小(不包括缓冲和缓存)。
- buff/cache:用于缓冲和缓存的内存大小。
第五行:交换分区使用情况
1
| MiB Swap: 2000.0 total, 1500.0 free, 500.0 used. 5000.0 avail Mem
|
- total:总交换分区大小。
- free:未使用的交换分区大小。
- used:已使用的交换分区大小。
- avail Mem:可用内存(包括 free 和部分 buff/cache)。
进程信息(下方动态表格部分)
下方表格动态显示系统的进程信息,每个进程占一行。默认显示的列包含以下字段:
列名 |
含义 |
PID |
进程 ID。 |
USER |
进程所属用户。 |
PR |
进程优先级(priority)。 |
NI |
进程的 nice 值(优先级调整值)。 |
VIRT |
进程占用的虚拟内存总量(包括交换分区)。 |
RES |
进程占用的物理内存大小。 |
SHR |
共享内存大小。 |
S |
进程状态:R (运行)、S (休眠)、Z (僵尸)、T (停止)。 |
%CPU |
进程占用的 CPU 百分比。 |
%MEM |
进程占用的内存百分比。 |
TIME+ |
进程累计运行时间(格式:分钟:秒.百分秒)。 |
COMMAND |
启动进程的命令名称或路径。 |
常用操作与快捷键
在运行 top
命令时,可以通过键盘输入快捷键动态调整显示内容或执行操作:
快捷键 |
功能 |
h |
显示帮助菜单。 |
q |
退出 top 命令。 |
Space |
马上刷新一次显示(无需等待刷新间隔)。 |
P |
按 CPU 使用率排序(默认)。 |
M |
按内存使用率排序。 |
T |
按运行时间排序。 |
k |
杀死进程(需要输入 PID)。 |
r |
调整进程优先级(需要输入 PID 和新的 nice 值)。 |
u |
显示指定用户的进程。 |
s |
设置刷新时间间隔(以秒为单位)。 |
f |
设置或取消显示的列(自定义显示字段)。 |
o 或 O |
按指定字段排序(输入字段名称)。 |
l |
开关显示第一行(系统时间和负载)。 |
t |
开关显示 CPU 使用信息。 |
m |
开关显示内存信息。 |
z |
切换显示颜色模式。 |
常用选项
除了交互模式操作外,top
命令也支持选项,可以直接在命令行中指定:
选项 |
功能 |
-b |
以批处理模式运行,适合脚本抓取数据(非交互模式)。 |
-n [次数] |
指定刷新次数后退出(需结合 -b 使用)。 |
-u [用户名] |
仅显示指定用户的进程。 |
-p [PID] |
仅监控指定的进程 ID。 |
-d [秒] |
设置刷新间隔时间(默认 3 秒)。 |
-H |
显示线程信息,而非进程信息。 |
-o [字段名] |
指定排序字段(如 %CPU 或 %MEM )。 |
-c |
显示完整的命令行(包括命令参数)。 |
常用示例
普通运行
监控某个用户的进程
批处理模式(抓取一次数据后退出)
1
| top -b -n 1 > top_output.txt
|
- 以批处理模式运行,抓取一次系统状态并保存到
top_output.txt
文件中。
每 5 秒刷新一次
仅监控某个进程(按 PID)
按内存使用率排序
在 top
运行后按 M
,或者直接使用选项:
显示线程信息
注意事项
-
权限问题:
- 普通用户运行时,无法监控其他用户的某些进程(如系统守护进程)。
- 使用
sudo
提升权限可以查看所有用户的进程。
-
刷新间隔:
- 刷新间隔过短可能导致系统负载增加,建议设置适当的刷新时间(如 3 秒或更长)。
-
僵尸进程:
- 如果看到
zombie
进程(僵尸进程),需要检查程序的父进程是否处理了子进程的退出状态。
总结
top
是实时监控系统性能和进程活动的核心工具,它可以帮助快速定位性能瓶颈(如高 CPU、内存占用)。
- 常用快捷键:
P
:按 CPU 使用率排序。
M
:按内存使用率排序。
k
:杀死进程。
q
:退出。
- 如果需要非交互式使用
top
,可以结合 -b
和其他选项,方便在脚本中使用或保存结果到文件中。