top是检查机器当前运行状况的第一个命令,就好比是机器体检时的第一张报告单。
先了解一下TOP命令的使用
[root@localhost /]# top -help
top: procps version 3.2.8
usage: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
这个命令的使用比较简单,选项解释如下:
- -h,表示help的意思,查看top命令的使用语法。
- -v,表示version的意思,和-h的运行结果是一样,可以查看top命令的版本。
- -d,如果仅仅执行top命令,一般默认是3秒钟数据更新一次,这个可以更改多长时间更新一次,单位是秒。
- -n,表示数据更新多少次后就结束命令的执行。默认是不结束。
- -u,显示指定用户的进程。
- -p,显示指定的进程信息。
下面看一个具体TOP的输出
top - 16:03:58 up 23:55, 17 users, load average: 3.39, 3.88, 3.62
Tasks: 288 total, 4 running, 284 sleeping, 0 stopped, 0 zombie
Cpu(s): 30.1%us, 0.5%sy, 0.0%ni, 65.4%id, 3.9%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 32797280k total, 32570120k used, 227160k free, 170492k buffers
Swap: 33554424k total, 1364k used, 33553060k free, 27500872k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27545 root 20 0 2523m 2.4g 620 R 100.0 7.8 7:26.00 fsmepsnormalize
27574 root 20 0 37196 22m 1816 R 100.0 0.1 6:25.86 pocketsphinx_ba
27593 root 20 0 24888 11m 1424 R 98.9 0.0 3:10.77 pocketsphinx_ba
1 root 20 0 19400 1084 880 S 0.0 0.0 0:00.83 init
下面逐个解释是什么意思吧。
一,前面两行信息
- 16:03:58 表示系统当前时间。
- up 23:55,表示系统已经运行时间。
- 17 users,当前登录的用户数。
- load average: 3.39 , 3.88 , 3.62。这分别表示内核任务队列在1分钟、5分钟、15分钟的长度。就是通常我们说的负载。
- Tasks:288 total。当前系统的进程总数。
- 4 running,当前系统中有4个正在运行的进程。
- 284 sleeping ,当前系统中有284个休眠的进程。
- 0 stopped 。停止进程数为0。
- 0 zombie。僵死进程数为0。
二,CPU信息
- %us。用户空间进程占用CPU时间的百分比。
- %sy。内核空间进程占用CPU时间的百分比。
- %ni。ni表示nice的意思,也就是哪些用户进程被提升优先级之后,占用的CPU运行时间。
- %id。系统空闲时间。
- %wa。这个表示CPU在等待磁盘写入的时间。
- %si。CPU处理软中断(soft interrupt)的时间百分比。
- %hi。CPU处理硬中断(hard interrupt)的时间百分比。
- %st。这个表示在有虚拟机的时候,被虚拟机占用的CPU时间。st表示窃取的意思,steal的意思。
很明显,上面这些百分比相加的话,是等于100%的。这只表示单个CPU的运行状况。
三,内存使用信息
- total。表示系统可用的物理内存总量。
- used。当前已经使用的物理内存总量。
- free。当前的空闲内存总量。
- buffers。用作系统内核缓存的物理内存总量。
四,系统交换区信息
- total。系统全部的交换区总量。
- used。当前已经使用的交换区总量。
- free。空闲的交换区总量。
- cached。被缓冲的交换区总量。
五,进程信息
- PID。进程ID。
- USER。当前进程的用户,就是这个进程是由谁来执行的。
- PR。进程执行优先级。
- NI。当前进程的NICE值。nice值可以调整进程运行的优先级。
- VIRT。当前进程对虚拟内存使用量。
- RES。当前进程的物理内存使用量。
- SHR。当前进程的共享内存使用量。
- S。当前进程的状态,可以是R= 正在运行状态,S=休眠状态,D=不可中断的睡眠状态,T=跟踪/停止,Z=僵尸进程
- %CPU。当前进程使用CPU的百分比。
- %MEM。当前进程使用内存的百分比。
- TIME+。当前进程的累计CPU占用时间
- COMMAND。当前进程的命令行。
所在的输出都解释了,就是上面的几个部分。当然,如果发现在问题,先看哪些指标不正常,再执行具体的更详细的命令,其实就是更详细的体检。