分类: 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