1. 概述
top 命令是 linux 下常用的性能分析工具,能够实时监控系统中各进程的资源占用情况。 top 命令会动态显示,不停刷新,显示系统中 CPU 最敏感的任务列表。 当然,也可以根据用户指定按照 CPU 使用、内存使用和执行时间对任务进行排序。
2. TOP 前五行的统计信息
统计信息区前五行是系统整体的统计信息。
2.1. 第一行 — 任务队列信息
与 uptime 命令的执行结果相同,内容如下:
代码语言:javascript复制top - 20:45:10 up 10:08, 1 user, load average: 0.00, 0.01, 0.05
任务队列信息
内容 | 意义 |
---|---|
20:45:10 | 当前时间 |
up 10:08 | 系统运行时间(10小时08分钟) |
1 user | 当前登录用户数 |
load average: 0.00, 0.01, 0.05 | 系统负载(任务队列的平均长度),分别是1分钟、5分钟、15分钟到现在的平均值 |
- 系统负载:0.00 到 1.00 之间表示非常通畅,任务无需等待,超过 1.00 表示超出负载,2.00 表示任务是负载能力的二倍
- 正常情况下,系统负载应该在 0.7*n 以下(n 为 CPU 核心数)
2.2. 第二行 — 进程信息
代码语言:javascript复制Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
进程信息
内容 | 意义 |
---|---|
105 total | 进程总数 |
1 running | 正在运行的进程数 |
104 sleeping | 睡眠进程数 |
0 stopped | 停止进程数 |
0 zombie | 僵尸进程数 |
2.3. 第三行 — CPU信息
当有多个CPU时,内容可能会超过一行。
代码语言:javascript复制Cpu(s): 0.0%us, 0.1%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
CPU 信息
内容 | 意义 |
---|---|
0.0%us | 用户空间占CPU百分比 |
0.1%sy | 内核空间占CPU百分比 |
0.0%ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
99.9%id | 空闲CPU百分比 |
0.0%wa | 等待输入输出的CPU时间百分比 |
0.0%hi | 硬件中断占CPU时间百分比 |
0.0%si | 软件终端占CPU时间百分比 |
0.0%st | 提供给虚拟化环境执行占CPU时间百分比 |
2.4. 第四行 — 内存信息
代码语言:javascript复制Mem: 288428k total, 257956k used, 30472k free, 40160k buffers
内存信息
内容 | 意义 |
---|---|
288428k total | 物理内存总量 |
257956k used | 使用的物理内存总量 |
30472k free | 空闲内存总量 |
40160k buffers | 用作内核缓存的内存量 |
2.5. 第五行 — 内存交换区信息
代码语言:javascript复制Swap: 1046524k total, 3856k used, 1042668k free, 82000k cached
交换区信息
内容 | 意义 |
---|---|
1046524k total | 交换区总容量 |
3856k used | 使用交换区的总量 |
1042668k free | 空闲交换区总量 |
82000k cached | 缓冲交换区总量 |
- 缓冲交换区:内存中的内容已经被换出交换区而载入内存,该部分交换区对应的内存被换出时可以不必再对交换区写入
3. 进程信息
进程信息
列名 | 含义 |
---|---|
PID | 进程ID |
PPID | 父进程ID |
RUSER | real user name |
UID | 进程所有者用户ID |
USER | 进程所有者用户名 |
GROUP | 进程所有者组名 |
TTY | 启动进程的终端名 |
PR | 优先级 |
NI | nice值,负数表示高优先级,正数表示低优先级 |
P | 最后使用的CPU,仅用于多 CPU 环境 |
%CPU | 上次更新到现在的 CPU 时间占用百分比 |
TIME | 进程使用的CPU时间总计(以秒为单位) |
TIME | 进程使用的CPU时间总计(以1/100秒为单位) |
%MEM | 进程使用物理内存百分比 |
VIRT | 进程使用虚拟内存总量(以KB为单位) VIRT=SWAP RES |
SWAP | 进程使用的虚拟内存中,被换出的大小 |
RES | 进程使用的未被换出的物理内存大小(以KB为单位) RES=CODE DATA |
CODE | 可执行代码占用物理内存总大小 |
DATA | 数据段 栈占用的物理内存总大小 |
SHR | 共享内存总大小 |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数 |
S | 进程状态 |
COMMAND | 命令名/命令行 |
WCHAN | 若进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志,参考 sched.h |
4. top 中的命令
命令 | 意义 | 默认值 |
---|---|---|
A | 分屏显示 | off(全屏显示) |
d | 刷新间隔 | 3秒 |
H | 线程模式 | off |
I | Irix/Solaris模式切换 | solaris 模式 |
p | 监控某个PID | no(监控所有PID) |
s | 保护模式 | off |
B | 是否支持粗体 | on |
l | 显示任务队列信息 | on |
t | 显示任务/cpu状态 | on |
m | 显示内存/交换区状态 | on |
1 | 显示全部CPU核心状态 | off |
b | 用背景突出显示 | off |
c | 显示详细命令 | off |
i | 显示僵尸进程 | on |
J | 数字右对齐 | on |
j | 列右对齐 | off |
R | 按照 pid 从大到小排序 | on |
S | 显示进程占用CPU的总时间 | off |
u | 只显示某个用户ID | off |
U | 显示全部用户ID | off |
x | 突出显示用于排序的列 | off |
y | 突出显示正在运行的任务 | on |
z | 是否配色 | off |
h/? | 显示help | |
Z | 配置颜色 | |
E/e | 切换内存数值单位(K、M、G) | off |
f/F | 显示或隐藏某些信息 | |
X | 设置列宽 | 0 |
L/& | 查找 | |
</> | 翻页 | |
V | 显示进程树 | off |
k | kill | |
r | 重新指定进程优先级 | |
W | 写入配置文件 | |
q/<ESC> | 退出 | |