一.说明
top命令经常用来监控Linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但是能用好它的人却很少,最近由于服务器内存用着用着就没有了,通过Top命令想定位一下服务内存耗完的原因。
二.图形展示
- 第一行
top - 10:04:16 up 120 days, 13:36, 1 user, load average: 0.00, 0.03, 0.08
10:02:46 — 当前系统时间
120 days, 13:36 — 系统已经运行了120天13小时36分钟(在这期间没有重启过)
1 users — 当前有1个用户登录系统
load average: 0.00, 0.03, 0.08 — load average后面的三个数分别是0分钟、0.03分钟、0.08分钟的负载情况。
- 第二行
Tasks: 150 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
Tasks — 任务(进程),系统现在共有150个进程,其中处于运行中的有1个,99个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
- 第三行
%Cpu(s): 2.6 us, 2.0 sy, 0.0 ni, 94.0 id, 1.3 wa, 0.0 hi, 0.1 si, 0.0 st
2.6% us — 用户空间占用CPU的百分比。
2.0% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
94% id — 空闲CPU百分比
1.3% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.1% si — 软中断(Software Interrupts)占用CPU的百分比
- 第四行
KiB Mem : 8167200 total, 770028 free, 7060864 used, 336308 buff/cache
8167200k total — 物理内存总量(8GB)
7060864k used — 使用中的内存总量(7.06GB)
770028k free — 空闲内存总量(770M)
336308k buffers — 缓存的内存量 (336M)
内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内 核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers,按这个公式此台服务器的可用内存。
- 第五行
KiB Swap: 0 total,0 free, 0 used. 842272 avail Mem
0 total — 交换区总量
0 used — 使用的交换区总量
0 free — 空闲交换区总量
842272 avail Mem — 可用内存
- 第七行
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
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时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
三.显示完整命令
top -c