经常会用到top命令来查看系统相关信息来分析系统慢、死机的情况。这里做个解释:
统计信息区
这五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下
top - 23:26:37 up 3:33, 1 user, load average: 0.09, 0.83, 1.72
23:26:37 :当前时间
up 3:33 :系统运行时间,格式为时:分
1 user :当前登录用户数
load average: 0.09, 0.83, 1.72 :系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.0%us, 1.0%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Tasks: 90 total :进程总数
1 running :正在运行的进程数
89 sleeping :睡眠的进程数
0 stopped :停止的进程数
0 zombie :僵尸进程数
Cpu(s): 1.0%us :用户空间占用CPU百分比
1.0%sy :内核空间占用CPU百分比
0.0%ni :用户进程空间内改变过优先级的进程占用CPU百分比
98.0%id :空闲CPU百分比
0.0%wa :等待输入输出的CPU时间百分比
0.0%hi :
0.0%si :
0.0%st :
第四、五行为内存信息。内容如下:
Mem: 507536k total, 398944k used, 108592k free, 688k buffers
Swap: 979928k total, 0k used, 979928k free, 267248k cached
507536k total :物理内存总量
398944k used :使用的物理内存总量
108592k free :空闲内存总量
688k buffers :用作内核缓存的内存量
Swap: 979928k total :交换区总量
0k used :使用的交换区总量
979928k free :空闲交换区总量
267248k cached :缓冲的交换区总量
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些 内容已存在于内存中 的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3636 mysql 20 0 314m 43m 6684 S 0.0 8.7 1:12.90 mysqld
5673 root 20 0 50736 12m 6980 S 0.0 2.5 0:02.23 apache2
5693 www-data 20 0 50816 7676 1880 S 0.0 1.5 0:00.02 apache2
PID:进程id
USER:进程所有者的用户名
PR:优先级
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:共享内存大小,单位kb
S:进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位秒
COMMAND:命令名/命令行