winston 发表于 2012-2-3 13:25:33

top命令详解

   Linux中常用top命令来查看系统当前的负载及load等情况,其实对于top命令而言里面有非常丰富的内容,本文将对其中具体的字段及含义做个介绍。

$ top
top命令显示信息介绍
top - 16:44:36 up 113 days, 36 min,1 user,load average: 0.10, 0.04, 0.00
Tasks: 111 total,   2 running, 108 sleeping,   1 stopped,   0 zombie
Cpu(s):0.0%us,0.0%sy,0.0%ni, 99.9%id,0.0%wa,0.0%hi,0.0%si,0.0%st
Mem:   5242880k total,4403900k used,   838980k free,   285712k buffers
Swap:2097144k total,      112k used,2097032k free,3127936k cached

PID USER      PRNIVIRTRESSHR S %CPU %MEM    TIME+COMMAND                                                                                                                                    
    1 root      15   0 10348640544 S0.00.0   0:00.13 init                                                                                                                                       
    2 root      RT-5   0    0    0 S0.00.0   0:01.82 migration/0                                                                                                                                 
    3 root      3419   0    0    0 S0.00.0   0:00.00 ksoftirqd/0                                                                                                                                 
    4 root      RT-5   0    0    0 S0.00.0   0:00.00 watchdog/0

运行top命令后,会显示如下的内容,具体各内容的含义如下:
【第一行】:      
16:44:36 ----表示当前系统的时间;
up 113 days, 36 min ----表示该机器已经启动了多长时间;
1 user ----当前连接到该机器的有一个用户;
load average: 0.10, 0.04, 0.00 ----分别对应1、5、15分钟内cpu的平均负载;
关于该参数的详细说明:该叁数是平常监控机器的运行状况的一个主要指标,我们知道每个cpu都会维护一个"运行队列",这里存放待执行的进程,只要不是在等待IO或者主动的wait就是可运行的进程,就会出现在这个队列里,如果这样的进程越来越多,cpu就需要花很长的时间来处理这些进程。这样cpu的负载其实就是指正在执行的进程以及处于运行队列中的进程的总和,平均负载就是在某段时间负载的平均值。         


【第二行】----进程的运行情况
各个参数的具体含义分别是:总进程数,正在执行的进程数,休眠的进程数,停止运行的进程数,僵尸进程数。
Tasks: 111 total ----进程总数;
2 running ---- 正在运行的进程数;
108 sleeping ---- 睡眠的进程数;
1 stopped ---- 停止的进程数;
0 zombie ---- 僵尸进程数;


【第三行】----cpu的利用率
Cpu(s):0.0%us ---- 用户空间占用CPU百分比;
0.0%sy ----内核空间占用CPU百分比;
0.0%ni ---- 用户进程空间内改变过优先级的进程占用CPU百分比;
99.9%id ---- 空闲CPU百分比;
0.0%wa ---- 等待输入输出的CPU时间百分比;
0.0%hi,0.0%si,0.0%st ---- 不常用,不做介绍;


【第四行】----物理内存的使用情况
Mem:   5242880k total ---- 物理内存的总量;
   4403900k used ---- 已经使用的物理内存的总理;
   838980k free ---- 空闲内存总量;
   285712k buffers---- 用作内核缓存的内存量


【第五行】 ---- 交换区的使用情况
Swap:2097144k total ---- 交换区的总量;
   112k used ---- 已经使用的交换区的量;
   2097032k free ---- 空闲交换区的量;
   3127936k 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 ----任务标志
    默认情况下仅显示的信息包括:PID USER      PRNIVIRTRESSHR S %CPU %MEM    TIME+COMMAND 。可以通过如下的快捷方式来更改显示的内容:

[*]通过【f】键可选择显示的内容,按f后会显示列的列表,按a-z即可显示或隐藏对应的列,按回车确定。
[*]通过【o】键可改变列的显示顺序。按小写的a-z可以将相应的列向右移动,按大写的A-Z可以将相应的列向左移动,按回车确定。
[*]按【F】或【O】,按a-z可将进程按相应的列进行排序,按【R】可将当前的排序倒转。
命令的使用方法 top [-]
[*]d ---- 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变。
[*]p ---- 通过指定监控进程 ID来仅仅监控某个进程的状态;
[*]s ---- 使top命令在安全模式下运行,这将免出人意料交互命令所带来的潜在风险;
[*]S ----指定累积模式;
[*]i---- 使top不显示任何闲置或僵死的进程;
[*]c ---- 显示整个命令行而不仅仅是显示命令名。
top的一些交互命令

[*]h或者? ---- 显示帮助画面,给出一些简短的命令总结说明。
[*]k ---- 终止一个进程,系统提示输入一个PID及需要发送给该进程的信号。一般终止进程用15信号,如果不能正常结束就使用9信号。 在安全模式下该命令被屏蔽。
[*]i ---- 忽略闲置和僵死的进程,这是一个开关式命令;
[*]q ---- 退出程序;
[*]r ---- 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID及需要设置的进程优先级的值。输入一个正值使优先级降低,反之则使进程拥有高优先级,默认是10;
[*]S ---- 切换到累积模式;
[*]s ---- 改变两次刷新之间的延迟时间,系统提示用户输入新的时间,单位为s。输入0则系统不断刷新,默认值是5。
[*]n ---- 显示的进程数,系统会提示输入需要显示的进程数目;
[*]f 或F ---- 从当前显示项目中添加或删除项目;
[*]o或O ---- 改变当前显示项目的顺序;
[*]l ---- 切换显示平均负载和启动时间的信息;
[*]m ---- 切换显示内存信息;
[*]t ---- 切换显示进程和CPU状态信息;
[*]c ---- 切换命令名称和完整命令行;
[*]M ---- 根据驻留内存大小进行排序;
[*]P ---- 根据CPU使用百分比大小进行排序;
[*]T ---- 根据时间/累积时间进行排序。

作者:zhaozheng7758 发表于2012-2-2 19:56:10

ztenv 发表于 2012-2-3 14:32:42

很详细了,
页: [1]
查看完整版本: top命令详解