top

显示系统的实时运行状态


语法格式

top [-bchHisSv] [-d delay] [-n num] [-p pids]

命令简介

top命令提供一种实时观察系统活动动态的手段。显示系统各种资源使用情况的统计数据,按照一定的排序原则,显示部分主要进程的运行状态、资源占用及运行时间等信息。

在top命令循环抽样不断刷新显示各种统计信息期间,利用其提供的交互界面,可以使用字符命令,定制top命令的显示形式与输出内容。例如,选择显示的字段与形式,选择排序的字段与排序原则等。也可以使用h和“?”命令查询交互命令的使用说明,使用n或“#”命令限定top命令显示的进程数量,以及使用q命令或Ctrl-C组合键退出top命令等。

命令选项

-b  以批处理方式运行top命令。采用批处理方式时,可以把top命令的输出信息发送给其他程序或写入文件中。直至运行“-n”选项指定的循环次数,或按下Ctrl-C组合键之后方退出top命令。

-c  在显示进程的命令行(包括命令选项与参数)或命令名之间切换。

-d ss.tt  指定数据取样与屏幕刷新的时间间隔(单位为秒)。默认的时间间隔是3秒。

-h, -v  显示命令的版本与用法,然后退出。

-H  在以进程或线程为单位显示统计数据之间切换。

-i  在显示或禁止显示空闲进程或僵尸进程之间切换。

-M  以k(1024)、M(10242)或G(10243)为单位显示内存的统计数据。

-n num  指定最大的抽样刷新显示次数。循环显示指定的次数后,退出top命令。

-p pids  监控指定进程ID的进程。多个进程ID之间需加逗号分隔符。也可以同时指定多个“-p”选项,每个选项指定一个进程ID。不管采用哪一种方式,最多只能同时指定20个进程ID。

-s  安全操作模式。

-S  累加时间模式。进程的CPU时间包括其已终止运行的子进程占用的CPU时间。

-u euser  仅监控匹配有效用户名或用户ID的进程。

-U user  仅监控指定用户名或用户ID的进程。

交互命令

<Enter>, <Space>

按下Enter键或空格键,可以立即刷新屏幕。

?, h  查询交互命令的使用说明。

b  加黑或常规显示运行进程。这个命令将会影响x与y命令的显示。

B  在加黑与常规显示之间切换。

c  在显示命令行与命令名之间切换。

d, s  修改数据抽样刷新屏幕的时间间隔(单位秒)。这个命令不能用于安全模式。

f, o  选择显示的字段与排序字段。

F, O  选择排序字段。进入单独的窗口,选择排序字段。

i  显示所有的主要进程(包括空闲进程)或仅显示当前正在运行的进程。

k  终止进程。提示时输入进程ID和欲发送的信号(信号编码或信号名均可)。默认的信号是 SIGTERM。注意,这个命令不能用于安全模式。

l  在显示或禁止显示系统负载一行数据之间切换。

m  在显示或禁止显示内存与交换区统计数据之间切换。

n, #  设置显示的最大进程数量。

q  退出top命令。

r  调整进程的优先级。提示时输入进程ID和优先级调整值。负数表示调高调度优先级,正数表示调低调度优先级。注意,这个命令不能用于安全模式。

R  选择从高到低还是从低到高排序。

S  在累加时间模式与常规时间模式之间切换。

t  在显示或禁止显示CPU统计数据之间切换。

u  选择用户。提示时输入用户ID或用户名,仅显示匹配指定有效用户ID的进程。若想恢复常规进程显示方式,可再次输入u命令,然后按下Enter键。

U  选择用户。提示时输入用户ID或用户名,仅显示匹配指定用户ID的进程。

x  高亮显示或常规显示当前排序字段一列。

y  高亮显示或常规显示当前正在运行的进程。

z  彩显或单显统计数据汇总区与进程观察区,参见“命令输出”一节的说明。

<  排序字段左移一列(除非当前的排序字段位于第一列)。

>  排序字段右移一列(除非当前的排序字段位于最后一列)。

命令输出

top命令的输出分为4部分:统计数据汇总区、信息与提示行、显示字段标题行及进程观察区。

统计数据汇总区包括终端窗口的前5行,第一行给出了系统当前运行状态的汇总统计信息。其中依次是当前的系统时间(即数据抽样时间)、系统自启动迄今为止的运行时间、系统中现有注册用户的数量,以及在最近1分钟、5分钟和15分钟内的平均系统负载值。

第二行是所有进程运行状态的汇总统计数据。其中第一个字段(total)表示系统当前共有多少个进程。其他字段分别表示处于下列每种运行状态的进程数量:

running  正在运行或已处于运行队列,一旦调度即可运行的进程数量。注意,这个数字有可能会大于系统配置的CPU个数。

sleeping  因等待外部事件完成而处于休眠状态的进程数量。

stopped  因跟踪调试或暂停运行的进程数量。

zombie  僵尸进程的数量

第三行是CPU工作状态的分类统计信息,分述如下:

%us  CPU处于用户模式的时间量占用整个CPU时间的百分比。

%sy  CPU处于系统模式的时间量占用整个CPU时间的百分比。

%ni  CPU处理调整优先级的用户进程的时间量占用整个CPU时间的百分比。

%id  CPU处于空闲状态的时间量占用整个CPU时间的百分比。

%wa  CPU等待I/O完成的时间量占用整个CPU时间的百分比。

%hi  CPU处理硬件中断的时间量占用整个CPU时间的百分比。

%si  CPU处理软件中断的时间量占用整个CPU时间的百分比。

第四行是系统物理内存使用情况的汇总统计信息。其中每个字段的意义分述如下:

total  系统配置的可用物理内存总数。

used  当前已经使用的物理内存计数。

free  当前仍然空闲的物理内存计数。

buffers  用作系统缓冲区的物理内存计数。

第五行是交换区使用情况的汇总统计信息。其中每个字段的意义分述如下:

total  系统配置的交换区总数。

used  当前已经使用的交换区计数。

free  当前仍然空闲的交换区计数。

cached  用作系统缓存的交换区计数。

信息与提示行位于统计数据汇总区之后,占用一行,用于交互操作时输出信息与提示。

显示字段标题行给出进程信息每个字段的意义,参见“命令输出”一节。

进程观察区是根据预定或用户选择的字段,按一定的排序原则列出的前17个进程。

对于每个进程,top命令能够提供26个统计数据,受限于屏幕的显示宽度,通常只能显示12个字段。top采用26个英文字母组成的字符串AbcdEfgHIjKlMNOpQrsTuvWXyz,分别表示PID、PPID、RUSER、UID、USER、GROUP、TTY、PR、NI、P、%CPU、TIME、TIME+、%MEM、VIRT、SWAP、RES、CODE、DATA、SHR、nFLT、nDRT、S、COMMAND、WCHAN和Flags等26个字段。在上述字符串中,大写字母表示显示相应的字段,且按字母的排列顺序显示相应的字段。若想显示其他字段信息,可以输入f字符命令,然后输入相应字段的小写字母,再输入大写字母。若想改变输出字段的排列顺序,可以输入o字符命令,连续输入任何小写字母,可以把相应输出字段依次后移一个位置;连续输入任何大写字母,可以把相应输出字段依次前移一个位置。通过调整字母的排列位置,达到调整输出字段先后顺序的目的。

下面是top命令提供的26个进程统计数据,前面的小写字母用于选择和排序相应的字段。

a: PID  系统分配给进程的进程ID。

b: PPID  进程的父进程ID。

c: RUSER  进程属主的用户名。

d: UID  进程属主的有效用户ID。

e: USER  启动或进程属主的用户名。

f: GROUP  启动或进程属主的用户组名。

g: TTY  启动进程,从中输入输出数据的控制终端的设备文件名。如果进程的运行与终端无关,其设备文件名为问号“?”。

h: PR  赋予每个进程的优先级,用于确定进程调度的优先顺序。

i: NI  进程优先级的调整值。其中负数表示调高,正数表示调低,0表示不调整进程的优先级。在Linux系统中,优先级调整值的取值范围是-20~20。

j: P  最近占用的CPU(多CPU系统)。

k: %CPU  自上次抽样至今进程占用CPU时间的百分比。通常以此列数据基准,按照从大到小的顺序显示进程。

l: TIME  自开始运行迄今为止进程累计占用的CPU时间(单位秒),即运行相应进程至今实际耗费的CPU时间。

m: TIME+  同TIME,只是以1/100秒为单位。

n: %MEM  进程当前占用物理内存的百分比。

o: VIRT  分配给进程的全部虚拟内存映像空间的数量(单位为KB),是进程使用的虚拟内存总和,其中包括代码段、数据段、共享库占用的空间,以及转储到交换区的页面空间数量。进程的虚拟内存映像空间数量可表示为:VIRT = SWAP + RES或VIRT = /proc/pid/state文件中VmSize字段的值。

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  进程因跟踪调试,或因收到某个信号(如Ctrl-Z)而暂停运行。

Z  僵尸进程。进程已终止,但其父进程尚未完成善后处理。

x: COMMAND  启动进程的命令行或程序名。在运行期间可以使用c交互命令在两者之间切换。

y: WCHAN  进程处于休眠状态时调用的函数。根据系统内核的编译状况(参见System.map文件),这个字段通常会给出进程休眠时调用的内核函数的名字或地址。对于正在运行的进程而言,这个字段是一个减号“-”。

z: Flags  表示进程当前的调度标志。参见/usr/include/linux/sched.h文件。


索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z