原文地址:http://www.php100.com/html/webkaifa/Linux/2010/1209/6997.html

      top命令是linux下常用的系统分析工具,它能够实时显示系统中各个进程的资源占用状况,类似于Windows中的任务管理器。

1.top命令详解

在console中输入top命令后,得到的结果如下:

top - 10:09:14 up 2 min,  2 users,  load average: 1.22, 0.86, 0.35

Tasks: 169 total,   2 running, 167 sleeping,   0 stopped,   0 zombie

Cpu(s):  3.8%us,  1.0%sy,  0.0%ni, 94.1%id,  1.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:    502048k total,   495576k used,     6472k free,    23140k buffers

Swap:  1015800k total,        8k used,  1015792k free,   146060k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

1849 root      20   0  149m  31m 7992 S  4.3  6.5   0:04.84 Xorg

2435 root      20   0  837m  43m  28m R  1.7  8.9   0:01.37 konsole

...

第一行:任务队列信息(与uptime 命令的执行结果相同)

10:09:14 当前时间

2 min系统运行时间,格式为时:分

2 users当前登录用户数

load average: 1.22, 0.86, 0.35系统负载,即任务队列的平均长度(三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值)

第二、三行:进程和 CPU的信息。当系统有多个CPU 时,这些内容可能会超过两行。

169 total 进程总数

2 running 正在运行的进程数

167 sleeping 睡眠的进程数

0 stopped 停止的进程数

0 zombie 僵尸进程数

3.8% us 用户空间占用CPU百分比

1.0% sy 内核空间占用CPU百分比

0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比

94.1% id 空闲CPU百分比

1.0% wa 等待输入输出的CPU时间百分比

0.0% hi

0.0% si

0.0%st

第四、五行:内存信息

502048k total 物理内存总量

495576k used 使用的物理内存总量

6472k free 空闲内存总量

23140k buffers 用作内核缓存的内存量

1015800k total 交换区总量

8k used 使用的交换区总量

1015792k free 空闲交换区总量

146060k cached 缓冲的交换区总量

第六行:进程信息

PID: 进程标识号

USER: 进程所有者的用户名

PR: 进程的优先级

NI: 进程的优先级别数值(负值表示高优先级,正值表示低优先级)

VIRT: 进程占用的虚拟内存值(单位kb,VIRT=SWAP+RES)

RES: 进程占用的、未被换出的物理内存值(单位kb,RES=CODE+DATA)

SHR: 进程使用的共享内存值(单位kb)

S: 进程的状态(D=不可中断的睡眠状态,N=进程优先级为负值,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)

%CPU: 该进程占用的CPU使用率

%MEM: 进程占用物理内存的百分比

TIME+: 进程占用CPU的总时间(单位1/100秒)

Command: 进程的启动命令名称

注:默认情况下TOP命令仅显示比较重要的 PID、USER、PR等列,可以通过下面的快捷键来更改显示内容

 通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

 按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

 按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

 可显示的其他进程信息如下:

PPID 父进程id

RUSER Real user name

UID 进程所有者的用户id

GROUP 进程所有者的组名

TTY 启动进程的终端名

P 最后使用的CPU,仅在多CPU环境下有意义

TIME 进程使用的CPU时间总计,单位秒

SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。

CODE 可执行代码占用的物理内存大小,单位kb

DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

nFLT 页面错误次数

nDRT 最后一次写入到现在,被修改过的页面数。

WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名

Flags 任务标志,参考 sched.h

2.top命令参数

top [-] [d] [p] [q] [C] [S] [s] [n]

d  指定每两次屏幕信息刷新之间的时间间隔(单位:s)

p 通过指定监控进程ID 来仅仅监控某个进程的状态

q 该选项将使top 没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top 将以 尽可能高的优先级运行

S  指定累计模式

s  使top 命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

i 使top 不显示任何闲置或者僵死进程。

c 显示整个命令行而不只是显示命令名

3.top交互命令

在top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了s 选项, 其中一些命令可能会被屏蔽。

h 显示帮助画面,给出一些简短的命令总结说明

k 终止一个进程。

i 忽略闲置和僵死进程。这是一个开关式命令。

q 退出程序

r 重新安排一个进程的优先级别

S 切换到累计模式

s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s

f或者F 从当前显示中添加或者删除项目

o或者O 改变显示项目的顺序

l 切换显示平均负载和启动时间信息

m 切换显示内存信息

t 切换显示进程和CPU状态信息

c 切换显示命令名称和完整命令行

M 根据驻留内存大小进行排序

P 根据CPU使用百分比大小进行排序

T 根据时间/累计时间进行排序

W 将当前设置写入~/.toprc文件中