显示系统的实时运行状态
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