一直在网上查找一个完整的、详细的介绍关于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 文件。