一、状态含义
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
数据 |
含义 |
01:06:48 |
当前时间 |
up 1:22 |
系统运行时间,格式为时:分 |
1 user |
当前登录用户数 |
load average: 0.06, 0.60, 0.48 |
系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
数据 |
含义 |
total |
进程总数 |
running |
正在运行的进程数 |
sleeping |
睡眠的进程数 |
stopped |
停止的进程数 |
zombie |
僵尸进程数 |
0.3% us |
用户空间占用CPU百分比 |
1.0% sy |
内核空间占用CPU百分比 |
0.0% ni |
用户进程空间内改变过优先级的进程占用CPU百分比 |
98.7% id |
空闲CPU百分比 |
0.0% wa |
等待输入输出的CPU时间百分比 |
0.0% hi |
硬件CPU中断占用百分比 |
0.0% si |
软中断占用百分比 |
0.0% st |
虚拟机占用百分比 |
最后两行为内存信息。内容如下:
header 1 |
header 2 |
191272k total |
物理内存总量 |
173656k used |
使用的物理内存总量 |
17616k free |
空闲内存总量 |
22052k buffers |
用作内核缓存的内存量 |
192772k total |
交换区总量 |
0k used |
使用的交换区总量 |
192772k free |
空闲交换区总量 |
123988k cached |
缓冲的交换区总量 |
cached:缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 |
列名 |
含义 |
a |
PID |
进程id |
b |
PPID |
父进程id |
c |
RUSER |
Real user name |
d |
UID |
进程所有者的用户id |
e |
USER |
进程所有者的用户名 |
f |
GROUP |
进程所有者的组名 |
g |
TTY |
启动进程的终端名。不是从终端启动的进程则显示为 ? |
h |
PR |
优先级 |
i |
NI |
nice值。负值表示高优先级,正值表示低优先级 |
j |
P |
最后使用的CPU,仅在多CPU环境下有意义 |
k |
%CPU |
上次更新到现在的CPU时间占用百分比 |
l |
TIME |
进程使用的CPU时间总计,单位秒 |
m |
TIME+ |
进程使用的CPU时间总计,单位1/100秒 |
n |
%MEM |
进程使用的物理内存百分比 |
o |
VIRT |
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
p |
SWAP |
进程使用的虚拟内存中,被换出的大小,单位kb。 |
q |
RES |
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
r |
CODE |
可执行代码占用的物理内存大小,单位kb |
s |
DATA |
可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
t |
SHR |
共享内存大小,单位kb |
u |
nFLT |
页面错误次数 |
v |
nDRT |
最后一次写入到现在,被修改过的页面数。 |
w |
S |
进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) |
x |
COMMAND |
命令名/命令行 |
y |
WCHAN |
若该进程在睡眠,则显示睡眠中的系统函数名 |
z |
Flags |
任务标志,参考 sched.h |
二、命令使用
top使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明
参数 |
说明 |
d |
指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 |
p |
通过指定监控进程ID来仅仅监控某个进程的状态。 |
q |
该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 |
S |
指定累计模式 |
s |
使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 |
i |
使top不显示任何闲置或者僵死进程。 |
c |
显示整个命令行而不只是显示命令名 |
交互命令
命令 |
说明 |
Ctrl+L |
擦除并且重写屏幕。 |
h或者? |
显示帮助画面,给出一些简短的命令总结说明。 |
k |
终止一个进程。 |
i |
忽略闲置和僵死进程。这是一个开关式命令。 |
q |
退出程序。 |
r |
重新安排一个进程的优先级别 |
S |
切换到累计模式。 |
s |
改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。 |
f或者F |
从当前显示中添加或者删除项目。 |
o或者O |
改变显示项目的顺序。 |
l |
切换显示平均负载和启动时间信息。 |
m |
切换显示内存信息。 |
t |
切换显示进程和CPU状态信息。 |
c |
切换显示命令名称和完整命令行。 |
M |
根据驻留内存大小进行排序。 |
P |
根据CPU使用百分比大小进行排序。 |
T |
根据时间/累计时间进行排序。 |
W |
将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。 |
附常用操作
命令 |
说明 |
top |
每隔5秒显式所有进程的资源占用情况 |
top -d 2 |
每隔2秒显式所有进程的资源占用情况 |
top -c |
每隔5秒显式进程的资源占用情况,并显示进程的命令行参数 |
top -p 12345 -p 6789 |
每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况 |
top -d 2 -c -p 123456 |
每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数 |