使用过Linux的朋友应该对top程序不会陌生,但是很多人并没有真正的把top用起来,有很多功能估计都没有使用到,这篇文章就分享下我在网站运维服务器过程中使用top的技巧。
使用top
首先我们要查看下top的版本,如果版本太低,有可能不支持下面介绍的一些功能,输入top -v看看自己的Linux安装的TOP程序是什么版本:
[root@SEOZEN ~]# top -v
procps-ng version 3.3.10[root@SEOZEN ~]# top -v
procps-ng version 3.3.10在终端输入top应该可以看到类似下面界面的样式:

这个界面包含两部分,分别是系统摘要和进程列表,我会详细的一行一行的介绍。
系统统计信息
第一行:概况
top - 19:42:49 up 56 days, 5:30, 1 user, load average: 0.00, 0.01, 0.05top - 19:42:49 up 56 days, 5:30, 1 user, load average: 0.00, 0.01, 0.0519:42:49: 系统当前时间up 56 days, 5:30: 表示从服务器开机到现在一共运行的时间,这是是56天,19个小时42分49秒。1 user: 当前登录用户数load average: 0.00, 0.01, 0.05: 系统1分钟、5分钟、15分钟内的平均负载值,具体数值的含义和算法参考这里。
第二行:进程计数
Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombieTasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombietotal:进程总数。running:正在运行的进程数,对应状态TASK_RUNNING。sleeping:睡眠的进程数,对应状态TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE。stopped:停止的进程数,对应状态TASK_STOPPED。zombie:僵尸进程数,对应状态TASK_ZOMBIE。
**第三行:**CPU使用率(%Cpu(s))
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stus:进程在用户空间(user space)消耗的CPU时间占比,不包含调整过优先级的进程。sy:进程在内核空间(kernel space)消耗的CPU时间占比。ni:手动调整过用户态优先级的(niced)进程的CPU时间占比。id:空闲的(idle)CPU时间占比。wa:等待(wait)I/O完成的CPU时间占比。hi:处理硬中断(hardware interrupt)的CPU时间占比。si:处理软中断(software interrupt)的CPU时间占比。st:当Linux系统是在虚拟机中运行时,等待CPU资源的时间(steal time)占比。
第四、五行:物理内存和交换空间(Mem/Swap)
KiB Mem : 964312 total, 85656 free, 687008 used, 191648 buff/cacheKiB Mem : 964312 total, 85656 free, 687008 used, 191648 buff/cache单位为KB,以物理内存为例:
total:内存总量。free:空闲内存量。used:使用中的内存量。buff/cache:缓存和page cache占用的内存量。
进程详细信息
这里显示的数据列是可以改的,默认会显示如图中的12列。其含义分别如下:
PID:进程ID。USER:进程所有者的用户名。PR:从系统内核角度看的进程调度优先级。NI:进程的nice值,即从用户空间角度看的进程优先级。值越低,优先级越高。VIRT:进程申请使用的虚拟内存量。RES:进程使用的驻留内存(即未被swap out的内存)量。SHR:进程使用的共享内存量。S:进程状态可以为R=running,S=interruptible sleeping,D=uninterruptible sleeping,T=stopped,Z=zombie。%CPU:进程在一个更新周期内占用的CPU时间比例。%MEM:进程占用的物理内存比例。TIME+:进程创建后至今占用的CPU时间长度。COMMAND:运行进程使用的命令。
TOP内的操作
上下移动: 通过键盘上下箭头来移动显示其它进程的信息。左右移动: 通过键盘左右箭头来移动显示进程列信息可见性,如果有的行显示太长就可以通过这个操作查看。改变数值单位: 通过小写e和大写E来分别改变系统统计信息和进程详细信息的数值单位。多cpu使用情况: 如果你有不止一个cpu内核,可以通过按下1按钮来显示其它CPU信息,因为我的服务器就一个CPU内核,所以没得东西看。切换CPU图表: 按下t按钮来切换CPU实用的显示方式,挺有意思的自己可以试试。切换内存/SWAP图表: 按下m按键来切换内存和交换区的显示方式。添加颜色显示: 可以按下z来切换颜色显示程序进程信息。高亮运行进程: 按下键盘y来显示正在运行的进程。高亮显示当前排序列: 按下键盘x会高亮显示当前排序依据的列,默认是CPU列,可以能过按下如下大小字母来选择排序的表:P: The
%CPUcolumn.M: The
%MEMcolumn.N: The
PIDcolumn.T: The
TIME+column.切换command列显示: 按下c按键可以切换command列的显示。单独显示特定用户进程: 按钮u按键,再输入用户名称就可以查看特定用户的进程信息。设置进程的优先级: 按下键盘中的r,再输入PID进可以设置进程的nice值了。结束一个进程: 按下键盘k,再输入PID结束一个进程。
基本使用差不多就上面这些,主要我们使用TOP程序来查看系统进程,来发现一些有问题的进程及时进行处理,保持服务器的速度和稳定,这对于我们做SEO优化来说是很重要的。
本文参考资料:
https://www.howtogeek.com/668986/how-to-use-the-linux-top-command-and-understand-its-output/
Hello Yu