top [-] [d delay] [n iterations] [c] [s] [S] [i]
top
命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,相似于Windows的任务管理器。
top
命令和 ps
命令的基本作用是相同的,显示系统当前的进程和其余状况;但是 top
是一个动态显示过程,就可以通过客户按键来不断刷新当前状态。
如前端执行该命令,它将独占前端,直到客户终止该程序为止。比较精确的说, top
命令提供了实时的对系统解决器的状态监视。
它将显示系统中 CPU
最“敏感” 的任务列表。该命令可以按 CPU
使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者者在个人定制文件中进行设定。在后面的详情中将把命令参数和交互命令分开讲述。
命令中空白和 -
是可以省略的。
常用项的含义如下:
d
指定每两次屏幕信息刷新之间的时间间隔。当然客户可以使用 s
交互命令来改变之。n
指定迭代次数,也就是 top
刷新的次数,到达这个次数之后 top
就自动中止。S
指定累计模式,列出所有进程和它已结束的子进程使用的 cpu
;交互命令 S
可以有更详细的信息。s
使 top
命令在安全模式中运行。这将去除交互命令所带来的潜在危险,可更好地用系统配置文件来控制。i
使 top
不显示任何闲置或者者僵死进程。c
显示整个命令行而不只是显示命令名更多的项参见 man
手册。
$top
输入之后,输出相似如下:
top - 13:38:22 up 5:15, 7 users, load average: 0.97, 1.13, 1.15 Tasks: 158 total, 2 running, 155 sleeping, 0 stopped, 1 zombie Cpu(s): 56.0%us, 1.3%sy, 0.0%ni, 41.3%id, 1.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 505864k total, 497528k used, 8336k free, 7912k buffers Swap: 995988k total, 299108k used, 696880k free, 96432k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5992 quiethea 20 0 403m 101m 19m R 108 20.5 364:32.24 firefox 5339 root 20 0 482m 89m 6688 S 6 18.2 9:27.88 Xorg 12162 quiethea 20 0 2412 1092 800 R 4 0.2 0:00.02 top 1 root 20 0 3056 556 496 S 0 0.1 0:01.34 init 2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd ......更多的内容省略......
这样,运行之后 top
会持续的刷新,并且期间可以接收交互命令。
启动 top
很简单,其余的选项可以查看前面的形容,关键要明白输出内容的含义,这里对输出的详细解释如下。
前五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime
命令的执行结果。其内容如下:
13:38:22
当前时间up 5:15
系统运行时间,格式为时:分7 user
当前登录客户数load average: 0.97, 0.13, 1.15
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。第二、行为进程和 CPU
的信息。当有多个 CPU
时,这些内容可能会超过两行。 内容如下:
Tasks: 158 total
进程总数2 running
正在运行的进程数155 sleeping
睡眠的进程数0 stopped
中止的进程数1 zombie
僵尸进程数Cpu(s): 56.0% us
客户空间占用CPU百分比1.3% sy
内核空间占用CPU百分比0.0% ni
客户进程空间内改变过优先级的进程占用CPU百分比41.3% id
空闲CPU百分比1.3% wa
等待输入输出的CPU时间百分比0.0% hi
0.0% si
0.0% st
最后两行为内存信息。内容如下:
Mem: 505864k total
物理内存总量497528k used
使用的物理内存总量8336k free
空闲内存总量7912k buffers
用作内核缓存的内存量Swap: 995988k total
交换区总量299108k used
使用的交换区总量696880k free
空闲交换区总量96432k cached
缓冲的交换区总量。内存中的内容被换出到交换区,然后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下常用列的含义。
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left">序号</td>
<td class="org-left">列名</td>
<td class="org-left">含义</td>
</tr>
</tbody>
</table>
a PID 进程id b PPID 父进程id c RUSER Real user name d UID 进程所有者的客户id e USER 进程所有者的客户名 f GROUP 进程所有者的组名 g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ? h PR 优先级 i NI nice值。负值表示高优先级,正值表示低优先级 j P 最后使用的CPU,仅在多CPU环境下有意义 k %CPU 上次升级到现在的CPU时间占用百分比 l TIME 进程使用的CPU时间总计,单位秒 m TIME+ 进程使用的CPU时间总计,单位1/100秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 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=跟踪/中止 Z=僵尸进程 x COMMAND 命令名/命令行 y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 z Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND
列。可以通过后面说到的快捷键来更改显示内容。
top
命令之后的交互这里的内容讲述的是在启动 top
命令之后,如何和 top
程序进行交互
输入 h
, 或者输入 ?
.
这样将会显示当前可以和 top
程序交互的命令的简短信息。
步骤如下:
f
键。这样 top
会显示出一个列表,列表每项表示 top
命令输出的某一列,每项前面的字母用于和该项交互。当前 top
输出中将要显示的列,其对应的项前面用一个 *
来标记。A
为例子, A
(或者 a
)表示对 PID
列的控制,按下 A
(或者 a
)将会在当前 top
输出中 显示/隐藏 PID
相关的信息。top
输出。这里其余任意键就是指不是控制每列 显示/隐藏 切换的键。这样会返回到刚才的 top
输出并且显示的方式由你刚刚指定的方式来显示了。步骤如下:
o
键。 这样会显示一个列表,前有 *
的项表已显示的列。列表次序对应 top
输出列从左到右的显示次序。每项前面的字母(除去 *
)是对应于 top
输出的列标识。a-z
可以将相应的列向右移动,而大写的 A-Z
可以将相应的列向左移动。例如 A
表示 PID
,那么输入 a
会将该项下移(对应于相应列右移),输入 A
会将该项上移.top
输出,列的次序会按照你刚才设定的来显示。步骤如下:
F
, 或者输入 O
。 这样 top
会显示出一个列表,列表每项表示 top
命令输出的某一列,每项前面的字母用于和该项交互。当前 top
输出以哪列进行排序,那么对应项前面就用一个"*"来标记。CPU
占用排序,假设 PID
列标识为 A
,假如输入 a
那么将会以 PID
来排序 top
显示的输出。top
输出并且显示的方式由你刚刚指定的方式来显示了。输入 R
.
这样,当前的top输出显示会以相应列的设置逆序来进行显示。
输入 z
.
这样,会在彩色/非彩色方式显示之间来切换。
输入 b
.
这样,会在加粗/非加粗方式之间来切换。注意这里加粗/非加粗是指和x,y命令的高亮相互配合的。
输入 x
.
这样,会切换的“高亮/非高亮”当前的排序列。
输入 y
.
这样,会切换“高亮/非高亮”当前运行状态的任务。
top
命令输入 q
.
这样,就退出 top
命令了。