top 命令是 Linux 系统中非常常用的性能监控工具,它能够实时显示系统的进程、CPU、内存、负载等资源的使用情况。下面我将详细讲解 top 命令的使用方法和相关参数。
1. 基本用法
在终端输入 top 命令后,你会看到类似下面的输出:
bash
top - 07:40:10 up 1 day, 3:29, 2 users, load average: 0.02, 0.04, 0.05
Tasks: 200 total, 1 running, 199 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.2 us, 0.3 sy, 0.0 ni, 95.3 id, 1.2 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7983.5 total, 2391.2 free, 2392.5 used, 3199.8 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3960.0 avail Mem
2. 主要输出字段解释
第一行:系统总体信息
时间(07:40:10):当前系统时间。
运行时间(up 1 day, 3:29):系统的运行时间,即自上次启动以来已运行的时间。
用户数(2 users):当前登录的用户数。
负载均衡(load average: 0.02, 0.04, 0.05):系统负载的平均值。后三个数字分别表示过去1分钟、5分钟和15分钟的负载平均值。
第二行:任务(进程)信息
Tasks: 200 total:系统中当前运行的总进程数。
1 running:当前正在运行的进程数。
199 sleeping:当前处于休眠状态的进程数。
0 stopped:已停止的进程数。
0 zombie:僵尸进程的数目。
第三行:CPU 使用情况
%Cpu(s): 表示 CPU 各部分的使用情况:
us: 用户空间占用的 CPU 时间百分比(用户进程的占用)。
sy: 内核空间占用的 CPU 时间百分比(内核进程的占用)。
ni: 改变优先级的进程占用的 CPU 时间百分比。
id: 空闲 CPU 时间百分比。
wa: 等待 I/O 操作的时间百分比。
hi: 硬件中断占用的 CPU 时间百分比。
si: 软件中断占用的 CPU 时间百分比。
st: 虚拟化导致的 CPU 时间占用百分比。
第四行:内存使用情况
MiB Mem: 显示内存的总量、空闲内存、已使用内存以及缓冲区/缓存使用情况。
total: 总内存。
free: 空闲内存。
used: 已使用内存。
buff/cache: 用作缓存和缓冲区的内存。
第五行:交换区(Swap)使用情况
MiB Swap: 显示交换分区的总量、空闲量、已使用量以及可用内存。
total: 总交换分区。
free: 空闲交换分区。
used: 已使用交换分区。
avail Mem: 可用内存量。
3. top 命令的交互模式
在 top 命令的实时界面中,你可以通过一些快捷键来更改显示的内容或者调节排序方式。
常用快捷键:
P:按 CPU 使用率排序(从高到低)。
M:按内存使用量排序(从高到低)。
T:按时间/累计时间排序。
R:反转排序顺序(由高到低变为由低到高)。
1:显示每个 CPU 核心的使用情况(在多核处理器上非常有用)。
q:退出 top 命令。
h:显示帮助信息,列出所有可用的快捷键。
调整显示的字段:
按下 f 键进入字段选择界面,在这里你可以选择需要显示的字段。例如,你可以选择显示进程的 PID、进程名称、用户、内存占用、CPU 占用等。
搜索特定进程:
按下 o 键(过滤),输入你想要查找的进程名称或者关键字,top 会列出符合条件的进程。
改变刷新时间:
按下 d 键,可以设置 top 刷新信息的时间间隔(以秒为单位)。默认情况下,top 每 3 秒刷新一次。
4. top 命令的其他常见选项
top 命令也可以通过一些命令行选项来实现更多的功能:
top -n N:设置输出更新的次数,N 是数字,表示输出多少次后退出。例如 top -n 5 表示显示 5 次更新后退出。
top -d N:设置刷新时间间隔为 N 秒。例如 top -d 2 每 2 秒刷新一次。
top -b:批处理模式,适用于在脚本中使用,输出内容可以重定向到文件中。
top -u username:只显示某个用户的进程。
top -p PID1,PID2,…:只显示指定进程(通过进程 ID)信息。
5. 高级功能:top 的内存和 CPU 使用情况的详细查看
查看特定进程的详细信息:
通过 top 的交互模式,你可以查看到每个进程的详细信息,包括它的 CPU 占用、内存占用、状态(Running、Sleeping 等)、PID(进程号)、用户、优先级等。
调整优先级(Nice 值):
你可以通过 top 修改进程的优先级(Nice 值)。进入进程管理界面(按下 r 键),然后输入 PID 和新的优先级值。
6. 示例输出解析
假设你运行 top 命令,看到如下输出:
bash
top - 07:40:10 up 1 day, 3:29, 2 users, load average: 0.02, 0.04, 0.05
Tasks: 200 total, 1 running, 199 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.2 us, 0.3 sy, 0.0 ni, 95.3 id, 1.2 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7983.5 total, 2391.2 free, 2392.5 used, 3199.8 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3960.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 user1 20 0 100000 12000 3000 S 5.0 0.2 0:30.00 myprocess
5678 user2 20 0 50000 8000 1000 S 2.0 0.1 0:20.00 anotherproc
第一行显示的是系统的基本信息。
第二行显示系统中进程的总数以及不同状态的进程数。
第三行显示 CPU 各种状态的占比,us 表示用户进程占用了 3.2% 的 CPU。
第四行显示内存使用情况,系统总内存为 7983.5 MiB,空闲内存为 2391.2 MiB。
第五行显示交换区(Swap)情况,交换区总大小为 2048 MiB,目前没有使用交换区。
进程部分:
PID:进程 ID。
USER:进程所属的用户。
PR:进程优先级(Priority)。
NI:进程的 Nice 值,
7.命令行选项
top -d 2:设置刷新间隔时间为2秒。
top -p ,:只显示指定进程的资源使用情况,例如 top -p 1234,5678。
top -u :仅显示特定用户的进程。
top -n 10:指定 top 命令显示 10 次更新后退出。