今天遇到一台服务器卡顿,敲命令半天没反应,差点宕机。当服务器出现卡顿时,首先要查看的就是top的输出。
从top的输出中可以了解服务器负载、cpu、内存的使用情况。
在没有配置过的top界面,top输出是黑白的。

经过简单配置过的top,界面是彩色的,配置过程是 b 、x、z、W

简单配置之后,就可以使用 < > 移动排序了,< 是向左移动,>是向右移动,此时可以按 CPU使用率或内存使用率排序,查看是什么原因导致的系统卡顿。
前面的几个简单命令的意思如下:
b 加粗当前列(加粗的列代表当前是以此列进行排序)
x 高亮处于 running 的任务
z 加颜色(默认为红色)
W 将当前配置保存到文件(默认位置为 ~/.toprc)
如果对配置内容不满意,可以删掉配置文件重置默认配置。top的帮助文档已经将大部分常用命令解释的比较清楚了,输入 h 即可弹出大帮助信息。

关于 top 显示的内容的含义,需要查看top的man文档。我们首先关注的就是系统的负载。

三个数值分别代表1, 5 和 15 分钟的系统负载。
然后关注的是任务状态,任务的状态有以下几种。
running
sleeping
stopped
zombie
我们需要关注的是 zombie 状态的进程,这类进程我们俗称僵死进程。杀死僵死进程的方法是连它的父进程一起杀,不然杀不掉。
各种CPU状态的占用率缩写
us, user : time running un-niced user processes
sy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor

再向下看就是列表了,我们把列信息汇总一下
%CPU -- CPU 使用率
%MEM -- Memory 使用率 (RES)
COMMAND -- 命令行,如果需要显示参数,可以使用命令 c
TIME+ -- CPU 时间
PR -- 优先级
NI -- nice 值
VIRT -- 虚拟内存
RES -- 进程占用内存
SHR -- 共享内存
S -- 进程状态
进程状态缩写
D = uninterruptible sleep
R = running
S = sleeping
T = stopped by job control signal
t = stopped by debugger during trace
Z = zombie




