一直在网上查找一个完整的、详细的介绍关于Linux top命令的文章,但一直都未能如愿,于是自己动手根据top命令的man手册来写出这篇文章。事实上,关于Linux命令的介绍,大多数情况下都能通过man手册得知,无奈英文没学好,看着吃力。
Linuxtop是最常用的命令之一,它是一个动态的、实时的监控系统资源与系统运行任务的程序,做为Linux系统管理员,必须知道它的用法与含义。
1 工作界面
首先,看一下它的工作界面,如图:
它的工作界面共分为4个部分,从上到下如图所示;分别是:
n 摘要区
n 交互命令区
n 任务字段头部(或者说叫标签吧)
n 任务区
那么他们分别表示什么含义呢?下面我们来详细介绍各个区域。
1.1 摘要区
摘要区有当前的系统的总览信息,包括系统时间、系统负载、CPU使用信息、内存使用信息等。用个表格说明下吧:
11:51:35 | 当前系统时间 |
up 307 days, 18:33 | 系统运行时间,表示不间断运行多久了 |
3 users | 当前登录的用户数 |
load average: 0.38, 0.56, 0.55 | 系统负载,分别表示一分钟、五分钟、十五分钟到现在的平均值 |
Tasks: 892 total | 总进程数 |
1 running | 正在运行的进程数 |
885 sleeping | 处于睡眠状态的进程数 |
0 stopped | 已中止的进程数 |
6 zombie | 僵尸进程 |
Cpu(s): 0.1%us | us = user mode,用户空间占用CPU百分比 |
0.1%sy | sy = system mode,系统空间占用CPU百分比 |
0.0%ni | ni = low priority user mode (nice),用户进程空间内改变过优先级的进程占用CPU百分比 |
99.7%id | id = idle task,空闲CPU百分比 |
0.1%wa | wa = I/O waiting,系统I/0等待输入输出的CPU时间百分比 |
0.0%hi | hi = servicing IRQs |
0.0%si | si = servicing soft IRQs |
0.0%st | st = steal (time given to other DomU instances) |
Mem: 32949816k total | 内存总量 |
32721576k used | 已经使用的物理内存总量 |
228240k free | 空闲内存总量 |
204096k buffers | 用于内核缓存的内存量 |
Swap: 8193140k total | 交换空间总量 |
913800k used | 交换空间使用量 |
7279340k free | 交换空间空闲总量 |
19427576k cached | 交换空间缓冲总量。内存中的内容被换出到交换空间,而后又被换入到内存,但使用过的交换空间尚未被覆盖, 该数值即为这些内容已存在于内存中的交换空间的大小。相应的内存再次被换出时可不必再对交换空间写入。 |
1.2 交互命令区
顾名思义,就是你输入命令跟top程序打交道的。不同的命令作用于不同的区域,分别有以下命令:
Ø 全局命令
Ø 摘要区命令
Ø 任务区命令
Ø 颜色地图命令
这里只说明下交互命令区的作用块,后续介绍相关区域各个命令的详细用法及说明。
1.3 任务字段头部
每个任务都有相关的字段用于标识这个任务的具体意义,默认情况下仅显示PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAN 这些字段,但任务不仅仅只有这些字段供查看。以下表格列出了所有的字段含义:
字段名 | 含义 |
PID | 进程ID |
PPID | 父进程ID |
RUSER | Realusername |
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 | 进程使用的虚拟内存中,被换出的大小,单位KB。 |
RES | 进程使用的、未被换出的物理内存大小,单位KB。RES=CODE+DATA |
CODE | 可执行代码占用的物理内存大小,单位KB |
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位KB |
SHR | 共享内存大小,单位KB |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数。 |
S | 进程状态。 D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
COMMAND | 命令名/命令行 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志,参考sched.h |
至于如何显示以及调整相关的字段就涉及到交互命令了,具体的命令在后续的文档中详细描述。
1.4 任务区
任务区就是显示系统当前运行的任务(或者说进程吧),每个进程都有如上所述的各个字段的具体情况。
2 选项
usage: top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid[,pid ...]
-a | 根据内存使用量排序 |
-b | 批处理模式,可以将结果发送了其他程序或者一个文件中,在此模式不接收命令输入 |
-c | 显示命令行或程序名,等同于交互命令c |
-d | 指定延迟刷新时间间隔 |
-h | 显示版本和程序用法 |
-H | 显示用户空间进程 |
-i | 空闲进程开关,如果被关闭,将不显示空闲进程以及僵尸进程 |
-m | 作用于任务字段标签区,在任务字段头部区用USED字段代替VIRT字段 |
-M | 作用于摘要区,内存使用量那一行用(k,M,G)等单位显示内存量 |
-n | 刷新迭代次数,通常与 –b 选项一起用 |
-p | 监视指定的PID进程情况,显示多个PID 用逗号分隔 |
-s | 强制使用安全模式,这个选项能更好的控制系统配置文件 |
-S | 显示CPU使用的累计时间 |
-u,-U | 监视指定的用户进程 |
-v | 显示版本和用法 |
3 交互命令
3.1 全局命令
全局命令,作用于整个top命令工作前台,如表格所示:
? | 显示帮助 |
= | 实时刷新 |
A | 这个命令真不知道咋解释,它能作用于任务字段头部 |
B | 高亮显示 |
d | 改变刷新时间,将提示你输入延迟时间,单位秒 |
s | 与d相同 |
G | 显示其他列,默认不是有很多列么?一屏幕显示不全 |
I | Irix mode |
u,U | 提示输入一个用户名,仅显示输入的用户的任务 |
k | 提示输入一个PID,杀掉一个进程 |
q | 退出top |
r | 提示输入一个PID进程号,以调整此PID进程的nice值 |
W | 将当前的改变写入到配置文件 |
Z | 改变窗口的颜色 区域选择: S = 摘要区 M = 交互命令区 H = 任务字段头部区域 T = 任务区域 可选颜色: 0 = 黑色, 1 = 红色, 2 = 绿色, 3 = 黄色, 4 = 蓝色, 5 = 洋红色, 6 = 蓝绿色, 7 = 白色 回车键确认 |
3.2 摘要区命令
l | 关闭或显示(摘要区第一行)系统运行时间、登录用户、负载等信息 |
m | 关闭或显示摘要区(第四、四五行)内存相关信息 |
t | 关闭或显示摘要区(第二、第三行)任务以及CPU等信息 |
1 | 关闭或显示多核CPU信息 |
3.3 任务区命令
b | 激活高亮显示任务区,一般与x,y命令合用 |
x | 当任务区高亮显示开关激活,此命令高亮显示列 |
y | 当任务区高亮显示开关激活,此命令高亮显示行 |
z | 颜色显示开关 |
c | 显示程序名或者命令行 |
f | 增加或减少任务字段头部 |
o | 调整任务字段头部的顺序 |
H | 显示用户空间进程 |
S | 同选项S |
u | 同全局命令u |
i | 仅显示正在运行的任务 |
n | 设置最大任务数 |
排序相关命令 | |
A | 同全局命令A |
M | 按内存使用量排序 |
P | 按CPU使用率排序 |
T | 按CPU使用时间排序 |
< | 向左移动 |
> | 向右移动 |
F,O | 提示选择某列进行排序 |
R | 倒序排列 |
3.4 颜色相关命令
查看全局命令中的Z命令。
4 配置
用户家目录的 .toprc文件,亦可创建于/etc/toprc 文件。