top - 01:06:48 up 1:22, 1 user, load average: 0.06,
0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 |
前五行是pȝ整体的统计信息。第一行是d队列信息Q同 uptime 命o的执行结果。其内容如下Q?/p>
01:06:48 | 当前旉 |
up 1:22 | pȝq行旉Q格式ؓ??/td> |
1 user | 当前d用户?/td> |
load average: 0.06, 0.60, 0.48 | pȝ负蝲Q即d队列的^均长度?br> 三个数值分别ؓ 1分钟?分钟?5分钟前到现在的^均倹{?/td> |
W二、三行ؓq程和CPU的信息。当有多个CPUӞq些内容可能会超q两行。内容如下:
Tasks: 29 total | q程L |
1 running | 正在q行的进E数 |
28 sleeping | 睡眠的进E数 |
0 stopped | 停止的进E数 |
0 zombie | 僵尸q程?/td> |
Cpu(s): 0.3% us | 用户I间占用CPU癑ֈ?/td> |
1.0% sy | 内核I间占用CPU癑ֈ?/td> |
0.0% ni | 用户q程I间内改变过优先U的q程占用CPU癑ֈ?/td> |
98.7% id | I闲CPU癑ֈ?/td> |
0.0% wa | {待输入输出的CPU旉癑ֈ?/td> |
0.0% hi | |
0.0% si |
最后两行ؓ内存信息。内容如下:
Mem: 191272k total | 物理内存总量 |
173656k used | 使用的物理内存总量 |
17616k free | I闲内存总量 |
22052k buffers | 用作内核~存的内存量 |
Swap: 192772k total | 交换区总量 |
0k used | 使用的交换区总量 |
192772k free | I闲交换区总量 |
123988k cached | ~冲的交换区总量?br>
内存中的内容被换出到交换区,而后又被换入到内存,但用过的交换区未被覆盖, 该数值即?strong>内容已存在于内存?/strong>的交换区的大?br> 相应的内存再ơ被换出时可不必再对交换区写入?/td> |
l计信息区域的下ҎCZ各个q程的详l信息。首先来认识一下各列的含义?/p>
序号 | 列名 | 含义 |
a | PID | q程id |
b | PPID | 父进Eid |
c | RUSER | Real user name |
d | UID | q程所有者的用户id |
e | USER | q程所有者的用户?/td> |
f | GROUP | q程所有者的l名 |
g | TTY | 启动q程的终端名。不是从l端启动的进E则昄?? |
h | PR | 优先U?/td> |
i | NI | nice倹{负DC高优先U,正DCZ优先U?/td> |
j | P | 最后用的CPUQ仅在多CPU环境下有意义 |
k | %CPU | 上次更新到现在的CPU旉占用癑ֈ?/td> |
l | TIME | q程使用的CPU旉总计Q单位秒 |
m | TIME+ | q程使用的CPU旉总计Q单?/100U?/td> |
n | %MEM | q程使用?strong>物理内存癑ֈ?/td> |
o | VIRT | q程使用的虚拟内存总量Q单位kb。VIRT=SWAP+RES |
p | SWAP | q程使用的虚拟内存中Q被换出的大,单位kb?/td> |
q | RES | q程使用的、未被换出的物理内存大小Q单位kb。RES=CODE+DATA |
r | CODE | 可执行代码占用的物理内存大小Q单位kb |
s | DATA | 可执行代码以外的部分(数据D??占用?strong>物理? 存大,单位kb |
t | SHR | ׃n内存大小Q单位kb |
u | nFLT | 面错误ơ数 |
v | nDRT | 最后一ơ写入到现在Q被修改q的面数?/td> |
w | S | q程状态?br>
D=不可中断的睡眠状?br>
R=q行 S=睡眠 T=跟踪/停止 Z=僵尸q程 |
x | COMMAND | 命o?命o?/td> |
y | WCHAN | 若该q程在睡眠,则显C睡眠中的系l函数名 |
z | Flags | d标志Q参?sched.h |
默认情况下仅昄比较重要?PID、USER、PR、NI、VIRT、RES、SHR、S?CPU?MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更ҎC内宏V?/p>
通过 f 键可以选择昄的内宏V按 f 键之后会昄列的列表Q按 a-z 卛_昄或隐藏对应的列,最后按回R键确定?/p>
?o 键可以改变列的显C顺序。按写?a-z 可以相应的列向右移动,而大写的 A-Z 可以相应的列向左移动。最后按回R键确定?/p>
按大写的 F ?O 键,然后?a-z 可以进E按照相应的列进行排序。而大写的 R 键可以将当前的排序倒{?/p>
命o使用
1Q?工具Q命令)名称
top
2Q工P命oQ作?br>
昄pȝ当前的进E和其他状况Q?
top是一个动态显CE?卛_以通过用户按键来不断刷新当前状?如果在前台执行该命o,它将独占前台,直到用户l止该程序ؓ?
比较准确的说,top命o提供了实时的对系l处理器的状态监?它将昄pȝ中CPU最“敏感”的Q务列?该命令可以按CPU使用.内存使用和执行时?
对Q务进行排序;而且该命令的很多Ҏ都可以通过交互式命令或者在个h定制文g中进行设?
3Q环境设|?br>
在Linux下用?br>
4Q用方?br>
4Q?使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
4Q?参数说明
d 指定每两ơ屏q信息刷C间的旉间隔。当然用户可以用s交互命o来改变之?br>
p 通过指定监控q程ID来仅仅监控某个进E的状态?br>
q该选项top没有M延迟的进行刷新。如果调用程序有用户权限Q那么top以
可能高的优先q行?br>
S 指定累计模式
s 使top命o在安全模式中q行。这去除交互命令所带来的潜在危险?br>
i 使top不显CZQ何闲|或者僵死进E?br>
c 昄整个命o行而不只是昄命o?br>
4.3其他
下面介绍在top命o执行q程中可以用的一些交互命令。从使用角度来看Q熟l的掌握q些命o比掌握选项q重要一些。这些命令都是单字母的,如果在命
令行选项中用了s选项Q则可能其中一些命令会被屏蔽掉?br>
Ctrl+L 擦除q且重写屏幕?br>
h或? 昄帮助画面Q给Z些简短的命oȝ说明?br>
k
l止一个进E。系l将提示用户输入需要终止的q程PIDQ以及需要发送给该进E什么样的信受一般的l止q程可以使用15信号Q如果不能正常结束那׃?
信号9强制l束该进E。默认值是信号15。在安全模式中此命o被屏蔽?br>
i 忽略闲置和僵死进E。这是一个开兛_命o?br>
q 退出程序?br>
r 重新安排一个进E的优先U别。系l提C用戯入需要改变的q程PID以及需要设|的
q程优先U倹{输入一个正值将使优先降低Q反之则可以使该q程拥有更高的优先权。默认值是10?br>
S 切换到篏计模式?br>
s 改变两次h之间的gq时间。系l将提示用户输入新的旉Q单位ؓs。如果有数Q?
换成m s。输?值则pȝ不断刷斎ͼ默认值是5
s。需要注意的是如果设|太的旉Q很可能会引起不断刷斎ͼ从而根本来不及看清昄的情况,而且pȝ负蝲也会大大增加?br>
f或者F 从当前显CZd或者删除项目?br>
o或者O 改变昄目的顺序?br>
l 切换昄q_负蝲和启动时间信息?br>
m 切换昄内存信息?br>
t 切换昄q程和CPU状态信息?br>
c 切换昄命o名称和完整命令行?br>
M Ҏȝ内存大小q行排序?br>
P ҎCPU使用癑ֈ比大进行排序?br>
T Ҏ旉/累计旉q行排序?br>
W 当前设|写入~/.toprc文g中。这是写top配置文g的推荐方法?/span>