Chinaunix首页 | 论坛 | 博客
  • 博客访问: 657499
  • 博文数量: 96
  • 博客积分: 2005
  • 博客等级: 上尉
  • 技术积分: 1061
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 13:59
文章分类

全部博文(96)

文章存档

2013年(11)

2012年(30)

2011年(55)

分类: LINUX

2011-12-28 11:59:25

top 是 Unix/Linux 世界另一个可以显示系统各进程 (process) 状态的文字模式工具。和 ps 等不同,top 缺省不只是显示一次进程资讯就结束,而是不断更新最新情况直至使用者结束程序。更重要,top 如其名重点在列出消耗系统资源最多的十多个进程。

当启动 top 后会显示当前包括负载、进程数目、CPU 和 内存使用量等系统资讯,并缺省会列出 CPU 使用率 (%CPU) 最高的十多个进程 (显示进程的数目要视乎您画面的高度)。您可以按不同的键改变 top 显示系统和进程资讯的方式及管理各进程,包括按【M】键列出佔用最多内存的几个进程和【I】键切换显示各 CPU 使用率或整体使用率等。常用的 top 命令有:

? 或 h - 显示说明画面。 
q - 离开 top。 
【Space】或【Enter】 - 更新并重新绘划整个画面。 
M - 进程依内存使用率 (%MEM) 由大至小排列。 
T - 进程依总 CPU 时间 (TIME+) 由大至小排列。 
I - 在 Solaris 和 Irix 模式切换,改变 CPU 使用率的计算方法。缺省一般为 Irix 模式, 
k - 终止某个进程。 
r - 改变进程 nice 值,影响进程的优先序。 
目录 
1 画面资讯 
1.1 概要区 (Summary Area) 
1.2 任务区 (Task Area) 
2 改变进程优先序 
3 终止进程 
4 改变进程资料排序方法 
5 改变会显示的进程资料 
6 改变画面更新时间 
7 监察个别使用者的进程 
8 监察个别进程 
9 命令列表 
10 参考资料 
11 相关连结 

画面资讯 
以下是一个典型 GNU/Linux 上 top 的画面:

top - 16:39:44 up 18:06, 4 users, load average: 0.06, 0.08, 0.08
Tasks: 145 total,   3 running, 142 sleeping,   0 stopped,   0 zombie
Cpu(s): 10.9%us, 1.9%sy, 0.0%ni, 87.0%id, 0.0%wa, 0.2%hi, 0.0%si, 0.0%st
Mem:   2063588k total, 1381740k used,   681848k free,    28732k buffers
Swap: 3004112k total,     4740k used, 2999372k free,   431004k cached

PID USER      PR NI VIRT RES SHR S %CPU %MEM    TIME+ COMMAND
7830 johndoe   20   0 612m 345m 35m R   12 17.1 88:08.30 firefox
6892 root      20   0 472m 114m 12m S   11 5.7 49:38.39 Xorg
8642 johndoe   20   0 111m 31m 16m R    1 1.6   0:32.48 gnome-terminal
7362 johndoe   20   0 32368 4980 3744 S    1 0.2   6:10.90 pulseaudio
7367 johndoe   20   0 8456 5408 2288 S    1 0.3   0:08.98 gconfd-2
7486 johndoe   20   0 84784 32m 17m S    1 1.6   0:33.38 gnome-panel
31594 johndoe   20   0 2416 1168 884 R    1 0.1   0:07.02 top
    1 root      20   0 3056 1884 564 S    0 0.1   0:01.52 init
    2 root      15 -5     0    0    0 S    0 0.0   0:00.00 kthreadd
    3 root      RT -5     0    0    0 S    0 0.0   0:00.06 migration/0
    4 root      15 -5     0    0    0 S    0 0.0   0:01.26 ksoftirqd/0
    5 root      RT -5     0    0    0 S    0 0.0   0:00.00 watchdog/0
整个 top 画面主要分成三个区域,由上至下分别为:

概要区 (Summary Area) - 显示整个系统的资讯 
讯息/提示列 (Message/Prompt Line) - 显示各命令的结果讯息或让使用者输入命令的参数,平常为一列空行。 
任务区 (Task Area) - 显示各任务/进程[1]的资料。 
概要区 (Summary Area) 
第一列显示现时时间、系统运作时间 (up time)、使用者数目 (users) 和平均负载 (load average)。可以按 l 键切换是否显示。

top - 16:39:44 up 18:06, 4 users, load average: 0.06, 0.08, 0.08
平均负载的三个数值分别为在平均过去 1 分钟、5 分钟和 15 分钟在可运行或不可中断状态的进程数目。平均负载为 1.0 表示一个 CPU 被佔用所有时间。[2]

第二列显示任务资讯,包括任务总数、运行中 (running)、睡眠中 (sleeping)、停止了 (stopped) 和不能运作 (zombie) 的进程数目。可以按 t 键切换是否和下一列 CPU 状态列一同显示。

Tasks: 145 total,   3 running, 142 sleeping,   0 stopped,   0 zombie
第三列显示 CPU 状态,包括以下资料[3][4][5]:

us (user): 使用者空间 (user space) 佔用 CPU 百分比 
sy (system): 核心空间 (kernel space) 佔用 CPU 百分比 
ni (nice): nice 值比一般值 0 大 (优先序较低) 的进程佔用 CPU 百分比 
id (idle): CPU 閒置时间百分比 
wa (iowait): CPU 等待输入/输出的百分比 
hi (H/W Interrupt): CPU 处理硬件中断时间的百分比 
si (S/W Interrupt): CPU 处理软件中断时间的百分比 
st: (Steal): 在如 Xen 等虚拟环境下 CPU 处理其他作业系统时间的百分比 
Cpu(s): 10.9%us, 1.9%sy, 0.0%ni, 87.0%id, 0.0%wa, 0.2%hi, 0.0%si, 0.0%st
您可以按 t 键切换是否和上一列任务资讯一同显示。在多处理器 (multi-processor) 或多核 (multi-core) 系统上,您亦可以按 1 键切换使用一列显示整体 CPU 使用状态还是每个 CPU 使用一列显示其状态。

第四列和第五列分别显示内存和置换空间 (swap space) 使用率。可以按 m 键切换是否显示。

Mem:   2063588k total, 1381740k used,   681848k free,    28732k buffers
Swap: 3004112k total,     4740k used, 2999372k free,   431004k cache
任务区 (Task Area) 
任务区会由大至小每列显示一个耗用系统资料 (缺省为 CPU 使用率) 的进程。每个进程缺省会显示以下资料:

PID (Process ID) - 进程的识别码 
USER (Effective user name) - 进程的有效使用者名称,决定了进程的使用权限,一般是执行进程的使用者,但 suid 进程则会变成程序档案的拥有者。 
PR (priority) - 进程的优选值,数值越小表示进程的优先序越高。 
NI (nice) - 进程的 nice 值,会影响进程的优选值 (priority),可以为 20 至 -19 任何一个整数,数值越小会令进程的优先序越高。 
VIRT (Virtual memory) - 进程使用的总虚拟内存 (virtual memory) 大小,包括进程的程序码、资料和共享程序库再加上被置换 (swap out) 的空间,单位为 KiB。VIRT = SWAP + RES. 
RES (Resident size) - 进程非被置换的实体内存大小,单位为 KiB。RES = CODE + DATA 
SHR (Shared Mem size) - 进程使用的共享内存大小,即可以和其他进程共享的内存空间,单位为 KiB。 
S (Stats) - 进程的状态,可以为: 
D (uninterruptible sleep) - 在不可中断的休眠中 (一般为正在进行输入/输出) 
R (running) - 在运行中或可以被运行 (即在运行序列 run queue) 
S (sleeping) - 在可以被中断的休眠中 (一般是正在等待某事件完结) 
T (traced or stopped) - 已被停止。因工作控制讯号 (job control signal) 或进程在被追踪中。 
Z (Zombie) - 不能运作的进程,即所谓 zombie 进程。一般因为已终止但未能被其母进程成功接收的进程。 
%CPU (CPU usage)- 由上次 top 画面更新资料后进程的 CPU 使用率。为进程佔用的 CPU 时间除以实际时间 (CPU 时间 / 实际时间),以百分比显示。显示小数点后一个位。可以按 I 键切换 Irix 模式 (一般计算方法) 和 Solaris 模式 (一般的 CPU 使用率再除系统的处理器数目) 改变此栏显示的数值。 
%MEM (Memory usage) - 进程佔用实体内存大小对系统总实体内存大小的比例,以百分比显示。 
TIME+ (CPU Time)- 由进程被启动至今的总 CPU 时间。可以按 S 键切换是否开启累计模式 (Cumulative mode) 改变此栏显示的数值。 
COMMAND (Command line or Program name) - 启动进程的命令,可以按 c 键切换只显示程序名称或整个连参数的命令行。 
您可以按 f 和 o 键改变显示那些进程资料和显示次序,亦可以按 O 键改用 CPU 使用率以外的其他资料排列杂程。

改变进程优先序 
PID to renice: 1234
Renice PID 1234 to value: 5
终止进程 
PID to kill: 1234
Kill PID 1234 with signal [15]: HUP
改变进程资料排序方法 
任务区 (Task Area) 上的进程一般是依每个进程的 CPU 使用率 (%CPU) 由大至小排列,让您短到佔用 CPU 最多的几个进程。您可以改用其他进程资料排序,最简单有以下:

M - 进程依内存使用率 (%MEM) 由大至小排列。 
N - 进程依 PID 由大至小排序。 
T - 进程依总 CPU 时间 (TIME+) 由大至小排列。 
P - 回复到缺省设定 - 依 CPU 使用率 (%CPU) 由大至小排列。 
按 O 或 F 键显示另一个画面列出所有可以显示的进程资料,让您选择使用那项资料排序。您亦可以直接按 < 改用现时排序栏目在画面上左边的栏目排序,而按 > 键会改用右边的栏目排序。 (提示:按 b 和 x 键令正排序的栏目反白可以较易看到 键的效果。

改变会显示的进程资料 
除缺省显示的进程资料外,任务区 (Task Area) 亦可以显示其他进程资料。

按 f 键显示另一个画面列出所有可以显示的进程资料栏目,包括:

a: PID (process ID) - 进程的识别码 
b: PPID (Parent process ID) - 进程的母进程识别码,一般为执行让进程的进程。 
c: RUSER (Real user name) - 进程真实拥有者的使用者名称,即是执行进程的使用者。 
d: UID (User ID) - 进程的有效使用者识别码 (effective UID),一般为执行进程的使用者,但 suid 进程则会变成程序档案的拥有者。 
e: USER (User name) - 进程的有效使用者名称,一般为执行进程的使用者,但 suid 进程则会变成程序档案的拥有者。 
f: GROUP (Group name) - 进程的有效群组 (effective user group) 名称,一般为执行进程的群组,但 sgid 进程则会变成程序档案的所属群组。 
g: TTY' (Contorlling TTY) - 进程的操控终端机名称,作为进程的输入和输出。但对一些没有输入/输出的进程 (例如服务器进程或 X Window 程序),此栏会显示 '?'。 
h: PR (Priority) - 进程的优选值,数值越小表示进程的优先序越高。 
i: NI (Nice value) - 进程的 nice 值,会影响进程的优选值 (priority),可以为 20 至 -19 任何一个整数,数值越小会令进程的优先序越高。 
j: P (Last used processor) - 进程最后使用的处理器编号。在多处理器或多核系统中,此值会改变得颇密。尤其在 top 运作时,会因需要额外更多 CPU 时间运行 top 而令此值的改变更密。 
k: %CPU (CPU usage) - 由上次 top 画面更新资料后的 CPU 使用率。可以使用 I 命令切换 Irix 模式 (一般计算方法) 和 Solaris 模式 (一般的 CPU 使用率再除系统的处理器数目) 改变此栏显示的数值。 
l: TIME (CPU Time) - 由进程被启动至今的总 CPU 时间。可以使用 S 命令切换是否开启累计模式 (Cumulative mode) 改变此栏显示的数值。 
m: TIME+ (CPU Time) - 和 TIME 一样显示进程被启动至今的总 CPU 时间,但显示小数点后两个位 (精确度至百分之一秒)。可以使用 S 命令切换是否开启累计模式 (Cumulative mode) 改变此栏显示的数值。 
n: %MEM (Memory usage) - 进程佔用实体内存大小对系统总实体内存大小的比例,以百分比显示。 
o: VIRT (Virtual Image) - 进程使用的总虚拟内存 (virtual memory) 大小,包括进程的程序码、资料和共享程序库再加上被置换 (swap out) 的空间。VIRT = SWAP + RES 
p: SWAP (Swapped size) - 进程被置换的虚拟内存空间大小。 
q: RES (Resident size) - 进程非被置换的实体内存大小。RES = CODE + DATA 
r: CODE' (Code size) - 进程的程序码在实体内存佔用空间大小,亦叫作 text resident set (TRS)。 
s: DATA (Data+Stack size) - 进程佔用实体内存中的非程序码部份大小,亦叫作 data resident set (DRS)。 
t: SHR (Shared Mem size) - 进程使用的共享内存大小,即可以和其他进程共享的内存空间。 
u: nFLT (Page Fault count) - 进程中发生主要记忆页错误 (major page fault) 的次数。此错误主要在进程企图存取一个现时不存在的虚拟记忆页 (virtual page) 时产生,这表示系统需要由硬盘读入该记忆页。 
v: nDRT (Dirty Pages count) - 进程中在上次被写入硬盘后曾被更改过的记忆页数目。 
w: S (Process Status) - 进程的状态 
x: COMMAND (Command line or Program name) - 启动进程的命令,可以使用 c 命令切换只显示程序名称或整个连参数的命令行。 
y: WCHAN (Wait Channel) - 视乎是否有核心连结表 (kernel link map,即档案 System.map),此栏目会显示进程现时睡眠中核心函数 (kernel function) 的名称或地址。正在运行中的进程则会在此栏显示一个减号 (-)。留意显示此栏会令 top 多用 700 KB 的内存。 
z: Flags (Task Flags) - 进程现时的排程旗号,以十六进制显示。 
您可以按栏目左方的字母切换是否显示该栏目。会显示的栏目,字母会变成大阶并在左方有星号 (*)。不会显示的栏目亦为小阶。

此外,按 o 键,可以改变显示栏目由左至右的次序。按栏目左方字母的小阶,会把栏目移向右方。按大阶字目,会把栏目移向右方。

改变画面更新时间 
top 缺省会每三秒更新画面和所有资料,但您可以在 top 中按【d】或【s】键改变更新画面时间:

Change delay from 3.0 to: 2
上例表示设定每 2 秒更新画面。更新时间可以小数点后一个位 (十分之一秒) 的小数,但不能为负数。您亦可以在启动 top 时加入选项 -d 更新时间 设定更新画面时间:

top -d 2.5
监察个别使用者的进程 
要只监察有效 UID (effective UID) 为个别使用者的进程,可以在 top 按下【u】键并输入要监察使用者的名称 (user name) 或识别码 (UID):

Which user (blank for all): johndoe
不输入任何字完直接按【Enter】会重设为显示所有进程。您亦可以在启动 top 时加上选项 -u 使用者:

top -u johndoe
同样,您可以使用使用者名称或使用者识别码来指定使用者。以上命令会令 top 只显示有效 UID 为使用者 johndoe 的进程。

如果要监察真正/有效 UID 为个别使用者的进程,可以在 top 按下大写【U】键并输入要监察使用者的名称 (user name) 或识别码 (UID):

Which user (blank for all): johndoe
您亦可以在启动 top 时加上大写 -U 使用者 选项:

top -U johndoe
监察个别进程 
要只监察个别进程,可以启动 top 时加上选项 -p PID:

top -p 1234
以上命令会令 top 只显示 PID 为 1234 的进程。您可以多个 -p 选项或使用逗号隔开多个 PID 来监察多个进程:

top -p 1997,2003,2008,2012,2046
top 在使用 -p 选项时最多只可以同时监察 20 个进程。

命令列表 
主要命令:

? 或 h - 显示说明画面。 
q - 离开 top。 
【Space】或【Enter】 - 更新并重新绘划整个画面。 
d 或 s - 改变画面更新时间。 
z - 切换单色或彩色显示模式。 
B - 切换是否以粗体强调重要资料。 
c - 切换进程命令栏只显示命令本身还是连参数显示整个命令。 
f - 改变会显示的进程资料栏目。 
o - 改变显示进程的排序方法。 
M - 进程依内存使用率 (%MEM) 由大至小排列。 
N - 进程依 PID 由大至小排序。 
P - 进程依 CPU 使用率 (%CPU) 由大至小排列,缺省一般使用此方法排列。 
T - 进程依总 CPU 时间 (TIME+) 由大至小排列。 
I - 在 Solaris 和 Irix 模式切换,改变 CPU 使用率的计算方法。缺省一般为 Irix 模式, 
u - 监察有效 UID (effective UID) 为个别使用者的进程。 
U - 监察个真正/有效 UID 为别使用者的进程。 
i - 切换只显示活跃进程 (不显示閒置进程 idle process) 或所有进程,缺省一般显示所有进程 
n - 设定显示最多进程数目,缺省一般会尽用画面的空间显示最多的进程。 
= - 解除如 u/U/i/n 等命令或 -p 选项监察进程的过滤,显示所有进程。 
x - 切换是否以粗体或反白强调排序的进程资料栏目。 
y - 切换是否以粗体或反白强调正在运行的进程。 
b - 切换 x/y 命令强调的资料以粗体还是反白显示。 
k - 终止某个进程。 
r - 改变进程 nice 值,影响进程的优先序。 
l - 切换是否显示系统运作时间 (up time) 和平均负载 (load average)。缺省会显示。 
m - 切换是否显示内存和置换空间 (swap space) 使用率。缺省会显示。 
t - 切换是否显示进程 (task) 和 CPU 状态。缺省会显示。 
1 - 切换以一列显示所有 CPU 的平均状态还是每一个 CPU 显示一列状态资讯。缺省会只显示一列平均状态。

文件来源:http://hi.baidu.com/zdz8207/blog/item/bb57a4ef304d541afdfa3c91.html

阅读(3224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~