小小白祈祷中...

top 是 Linux 和类 Unix 系统中用于动态显示系统运行信息的命令行工具,它可以实时监控系统的进程活动系统资源使用情况,如 CPU 使用率、内存使用情况、任务状态等。top 是系统管理员和开发人员用来排查性能问题的一个重要工具。


基本用法

运行 top 命令:

1
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 设置或取消显示的列(自定义显示字段)。
oO 按指定字段排序(输入字段名称)。
l 开关显示第一行(系统时间和负载)。
t 开关显示 CPU 使用信息。
m 开关显示内存信息。
z 切换显示颜色模式。

常用选项

除了交互模式操作外,top 命令也支持选项,可以直接在命令行中指定:

选项 功能
-b 批处理模式运行,适合脚本抓取数据(非交互模式)。
-n [次数] 指定刷新次数后退出(需结合 -b 使用)。
-u [用户名] 仅显示指定用户的进程。
-p [PID] 仅监控指定的进程 ID。
-d [秒] 设置刷新间隔时间(默认 3 秒)。
-H 显示线程信息,而非进程信息。
-o [字段名] 指定排序字段(如 %CPU%MEM)。
-c 显示完整的命令行(包括命令参数)。

常用示例

普通运行

1
top
  • 默认以交互模式运行,实时显示系统资源使用情况。

监控某个用户的进程

1
top -u username
  • 仅显示指定用户的进程。

批处理模式(抓取一次数据后退出)

1
top -b -n 1 > top_output.txt
  • 以批处理模式运行,抓取一次系统状态并保存到 top_output.txt 文件中。

每 5 秒刷新一次

1
top -d 5
  • 设置刷新时间间隔为 5 秒。

仅监控某个进程(按 PID)

1
top -p 12345
  • 仅显示 PID 为 12345 的进程。

按内存使用率排序

top 运行后按 M,或者直接使用选项:

1
top -o %MEM

显示线程信息

1
top -H
  • 显示每个线程的信息,而不是进程。

注意事项

  1. 权限问题

    • 普通用户运行时,无法监控其他用户的某些进程(如系统守护进程)。
    • 使用 sudo 提升权限可以查看所有用户的进程。
  2. 刷新间隔

    • 刷新间隔过短可能导致系统负载增加,建议设置适当的刷新时间(如 3 秒或更长)。
  3. 僵尸进程

    • 如果看到 zombie 进程(僵尸进程),需要检查程序的父进程是否处理了子进程的退出状态。

总结

  • top 是实时监控系统性能和进程活动的核心工具,它可以帮助快速定位性能瓶颈(如高 CPU、内存占用)。
  • 常用快捷键
    • P:按 CPU 使用率排序。
    • M:按内存使用率排序。
    • k:杀死进程。
    • q:退出。
  • 如果需要非交互式使用 top,可以结合 -b 和其他选项,方便在脚本中使用或保存结果到文件中。