linux top命令详解

top命令的第一行:

top – 21:31:26 up 15:16, 5 users, load average: 0.61, 0.82, 0.75
依次对应:系统当前时间 up 系统到目前为止运行的时间, 当前登录系统的用户数量,load_average后面的三个数字分别是距离现在一分钟,五分钟,十五分钟的负载情况。这一行的结果与uptime显示信息相同
load average 数据是每隔5s 检查一次活跃的进程数,然后特定算法计算出的数值。如果这个数除以逻辑cpu的数量,结果高于5的时候就表明系统在超负荷运转了。

top 命令的第二行:
Tasks: 240 total,   2 running,  238 sleeping,  0 stopped,  0  zombie依次对应:tasks表示任务(进程),240 total则表示现在有240个进程,其中处于运行中的有2个,238个在休眠(挂起),stopped 状态即停止的进程数为0, zombie状态即僵尸进程数为0

top命令第三行: cpu状态:%Cpu(s): 13.7 us, 1.5 sy, 0.0 ni, 84.2 id, 0.6 wa, 0.0 hi, 0.0 si, 0.0 st
us:user 用户空间占用cpu的百分比sy:system 内核空间占用cpu的百分比ni:niced 改变过优先级的进程占用cpu的百分比空闲cpu百分比wa: IO wait IO等待占用cpu的百分比hi: Hardware IRQ硬中断 占用cpu的百分比si: software软中断 占用cpu的百分比st: 被hypervisor偷去的时间

top命令第四行:内存状态:KB
KiB Mem : 3775264 total, 250100 free, 2495300 used, 1029864 buff/cache

依次对应:物理内存总量(3.7G),空闲内存总量(2.5G),使用中的内存总量(2.4G),缓冲内存量
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第六行:空行

top第七行,各进程的监控
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 — 进程名称(命令名/命令行)

常用的有:PID, USR, S, %CPU, %MEM, TIME+, COMMAND
交互命令:h 帮助

敲enter或space , 刷新显示
‘A’:切换交替显示模式top命令视图下,键入‘A’显示如下:

显示4个窗口:
Def (默认字段组)
Job (任务字段组)
Mem (内存字段组)
Usr (用户字段组)四组字段共有一个独立的可配置的概括区域和它自己的可配置任务区域。4个窗口中只有一个窗口是当前窗口。当前窗口的名称显示在左上方。(注:只有当前窗口才会接受你键盘交互命令)
我们可以用’a’和’w’在4个 窗口间切换。’a’移到后一个窗口,’w’移到前一个窗口。用’g’命令你可以输入一个数字来选择当前窗口。在键入‘A‘后在键入‘a‘的显示如下:

多U多核CPU监控

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

观察上图,服务器有4个逻辑CPU,实际上是1个物理CPU。如果不按1,则在top视图里面显示的是所有cpu的平均值。

进程字段排序

默认进入top时,各进程是按照CPU的占用量来排序的,在【top视图 01】中进程ID为14210的java进程排在第一(cpu占用100%),进程ID为14183的java进程排在第二(cpu占用12%)。可通过键盘指令来改变排序字段,比如想监控哪个进程占用MEM最多,我一般的使用方法如下:
1. 敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:

我们发现进程id为12363的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。
高亮运行状态的进程 b, 然后通过y键关闭或打开运行状态进程的加亮效果
2. 敲击键盘“x”(打开/关闭排序列的加亮效果),top的视图变化如下:可以看到,top默认的排序列是“%CPU”。

3. 通过”shift + >”或”shift + <”可以向右或左改变排序列,下图是按一次”shift + >”的效果图:

改变进程显示字段 -- 这个没看懂

1. 敲击“f”键,top进入另一个视图,在这里可以编排基本视图中的显示字段:

这里列出了所有可在top基本视图中显示的进程字段,有”*”并且标注为大写字母的字段是可显示的,没有”*”并且是小写字母的字段是不显示的。如果要在基本视图中显示“CODE”和“DATA”两个字段,可以通过敲击“r”和“s”键