TOP指令监控
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
使用格式:
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:
d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p:通过指定监控进程ID来仅仅监控某个进程的状态。
q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S:指定累计模式。
s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i:使top不显示任何闲置或者僵死进程。
c:显示整个命令行而不只是显示命令名。
常用操作:
top //每隔5秒显式所有进程的资源占用情况
top -d 2 //每隔2秒显式所有进程的资源占用情况
top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
top -H -p pid //查看其所有活跃的线程资源消耗情况
第一行是任务队列信息,同 uptime 命令的执行结果。内容如下:
top – 10:37:03 up 10 days, 18:33, 0 users, load average: 0.24, 0.42, 0.62
1 |
10:37:03 |
当前时间 |
2 |
up 10 days, 18:33 |
系统运行时间,格式为时:分 |
3 |
0 users |
当前登录用户数 |
4 |
load average: 0.24, 0.42, 0.62 |
系统负载,即任务队列的平均长度。三个数值分别为 |
第二进程的信息。内容如下:
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
1 |
total |
进程总数 |
2 |
running |
正在运行的进程数 |
3 |
sleeping |
睡眠的进程数 |
4 |
stopped |
停止的进程数 |
5 |
zombie |
僵尸进程数 |
第三行 CPU的信息,当有多个CPU时,这些内容可能会超过两行,内容如下:
%Cpu(s): 4.7 us, 1.4 sy, 0.0 ni, 92.5 id, 1.1 wa, 0.0 hi, 0.3 si, 0.0 st
1 |
4.7 us |
用户空间占用CPU百分比 |
2 |
1.4 sy |
内核空间占用CPU百分比 |
3 |
0.0 ni |
用户进程空间内改变过优先级的进程占用CPU百分比 |
4 |
92.5 id |
空闲CPU百分比 |
5 |
1.1 wa |
等待输入输出的CPU时间百分比 |
6 |
0.0 hi |
硬件CPU中断占用百分比 |
7 |
0.3 si |
软中断占用百分比 |
8 |
0.0 st |
虚拟机占用百分比 |
第四行为内存信息。内容如下:
KiB Mem : 32781764 total, 240308 free, 14483908 used, 18057548 buff/cache
1 |
32781764 total |
物理内存总量 |
2 |
240308 free |
空闲内存总量 |
3 |
14483908 used |
使用的物理内存总量 |
4 |
18057548 buff/cache |
用作内核缓存的内存量 |
第五行为内存信息。内容如下:
KiB Swap: 0 total, 0 free, 0 used. 17800264 avail Mem
1 |
0 total |
交换区总量 |
2 |
0 free |
空闲交换区总量 |
3 |
0 used. |
使用的交换区总量 |
4 |
17800264 avail Mem |
缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。 |
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 4364932 959888 15556 S 1.0 2.9 20:29.19 java 2563 root 20 0 11824 1920 1500 S 0.0 0.0 0:00.00 bash
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列
进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义
序号 列名 含义
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