top 命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器中性能资源监视器,top命令语法格式如下:

top [选项]

注意:top默认持续动态输出显示,且默认5秒就动态显示一次,按q或Ctrl+C退出;

常用参数如下:

-d number		:表示指定每隔多少秒显示一次,默认是5秒;
-p 				:指定查看某个进程;
-u				:指定查看某个用户;
-n 				:设置退出前屏幕刷新的次数;
-b 				:将top信息编排成适合输出到文件,需要与-n刷新参数配合;

下面通过演示示例来查看top的显示输出的内容是什么意思:

[root@Centos8 ~]# top
top - 13:49:00 up  1:58,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 141 total,   2 running, 139 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :   3736.1 total,   2737.5 free,    251.4 used,    747.2 buff/cache
MiB Swap:   4068.0 total,   4068.0 free,      0.0 used.   3255.2 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  177536  11384   8336 S   0.0   0.3   0:02.02 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      8 root      20   0       0      0      0 I   0.0   0.0   0:00.05 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_perc+
     10 root      20   0       0      0      0 S   0.0   0.0   0:00.02 ksoftir+
     11 root      20   0       0      0      0 I   0.0   0.0   0:00.19 rcu_sch+
     12 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migrati+
     13 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdo+
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     15 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     16 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdo+
     17 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migrati+
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.02 ksoftir+
     20 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+

第一行:top - 13:49:00 up 1:58, 1 user, load average: 0.00, 0.00, 0.00
现在时间、 系统运行了多长时间、当前登录用户数、系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值,一般平均负载超过CPU的核心总数就是高负载了。查看CPU总核心数:cat /proc/cpuinfo | grep "processor" | wc -l

第二行:Tasks: 141 total, 2 running, 139 sleeping, 0 stopped, 0 zombie
进程总数、多少个正在运行、多少个休眠、多少个停止、多少个僵尸进程

第三行:%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st

0.2% us 		用户空间占用CPU百分比
0.2% sy 		内核空间占用CPU百分比
0.0% ni 		用户进程空间内改变过优先级的进程占用CPU百分比
99.5% id 		空闲CPU占用的CPU百分比
0.0% wa 		等待IO进程占用的CPU百分比
0.0%hi			硬中断请求服务占用的CPU百分比
0.2%si			软中断请求服务占用的CPU百分比
0.0%st			虚拟机占用百分比

第四行:MiB Mem : 3736.1 total, 2737.5 free, 251.4 used, 747.2 buff/cache ,第4行显示的是内存的相关信息;
第五行:MiB Swap: 4068.0 total, 4068.0 free, 0.0 used. 3255.2 avail Mem,第5行显示的是交换分区的使用情况;

下面显示的就是进程信息区统计信息区域的下方显示了各个进程的详细信息:

  	PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  177536  11384   8336 S   0.0   0.3   0:02.02 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
PID					表示进程的唯一ID号
USER      			该进程所属用户
PR					优先级,数值越小优先级越高
NI					优先级,数值越小优先级越高,取值-20-19,默认0
VIRT				进程使用的虚拟内存大小,单位KB
RES 				进程使用的物理内存大小,单位KB   
SHR 				共享内存大小,单位KB,计算一个进程实际使用内存=物理内存(RES)-共享内存(SHR)
S  					进行状态,status的缩写,S表示sleep,R表示running
%CPU   				进程占用物理CPU的百分比
%MEM     			进程占用物理总内存百分比
TIME+ 				进程运行时间
COMMAND				进程名

注意:%CUP这列显示的全部的cpu加起来的使用率,如果看到%CPU这一列显示150%也是正常的,这说明你的CPU是多核,执行top后按大键盘1看看,能够显示每一个cpu的使用率,%CPU这一列显示的是把全部cpu使用率加起来,比如有8核cpu,则%CPU这一列最大可到800%。

演示示例:

[root@Centos8 ~]# top -b -n 2 >> top.log				#top刷新2次后停止并将信息追加到文件保存

top命令常用交换按键:

1、交换按键 1,按数字1查看每一个核心的CPU占用率

[root@master ~]# top				#按数字1表示查看每一个核心的CPU占用率(默认显示的是总的cpu占用率),再按1就显示总核心数CPU
Tasks: 205 total,   1 running, 204 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st			#显示每核的cpu使用率
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st
%Cpu3  :  0.3 us,  0.7 sy,  0.0 ni, 98.0 id,  0.7 wa,  0.0 hi,  0.3 si,  0.0 st

2、交换按键 P,将结果按CPU使用率从高到底排序显示

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND           #按P键,进程按CPU使用率从高到底排序                                                                                                                   
  5435 mysql     20   0 2639720 294764  13836 S   2.6  3.7  12:14.20 mysqld                                                                                                                                   
  5789 zabbix    20   0  149072   3452   1864 S   0.7  0.0   1:18.18 zabbix_server                                                                                                                            
 34087 root      20   0       0      0      0 S   0.7  0.0   0:03.44 kworker/2:2                                                                                                                              
 34859 root      20   0  157712   2324   1560 R   0.7  0.0   0:06.79 top                                                                                                                                      
   925 root      20   0  302560   6196   4652 S   0.3  0.1   2:03.14 vmtoolsd                                                                                                                                 
  5748 zabbix    20   0  149480   3272   1360 S   0.3  0.0   0:22.89 zabbix_server 

3、交换按键上下方向键,查看进程列表

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND          	                                                                                                                        
   945 root      20   0    4368    592    496 R  78.7  0.0   7:13.13 rngd             	#使用上下方向键查看进程                                                                                                                        
 34430 root      20   0  107916    608    512 S  55.5  0.0   4:55.02 cat                                                                                                                                      
 34431 root      20   0  107912    608    512 S  12.6  0.0   1:40.94 md5sum                                                                                                                                   
  5435 mysql     20   0 2639720 294500  13832 S   1.0  3.7  11:26.11 mysqld                                                                                                                                   
   925 root      20   0  302560   6188   4652 S   0.3  0.1   1:55.97 vmtoolsd                                                                                                                                 
  5764 zabbix    20   0  149564   5828   3956 S   0.3  0.1   0:35.27 zabbix_server   

4、交换按键 M,按字母M键将进程结果按照内存从高到低排序显示

	PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                  
  5435 mysql     20   0 2639720 294764  13836 S   1.3  3.7  12:20.10 mysqld        	#M键将进程结果按照内存从高到低排序显示                                                                                                                           
 28563 root      20   0  331732  31124   6496 S   0.0  0.4   0:05.89 firewalld                                                                                                                                
  1236 root      20   0  553156  16424   5784 S   0.0  0.2   0:15.04 tuned                                                                                                                                    
 31553 root      20   0  112820  15888   3404 S   0.0  0.2   0:00.08 dhclient                                                                                                                                 
  1248 root      20   0  621692  14300   9416 S   0.0  0.2   0:00.38 libvirtd                                                                                                                                 
   940 polkitd   20   0  531536  14092   4788 S   0.0  0.2   0:01.22 polkitd                                                                                                                                  

5、交换按键q,退出top,等价于按Ctrl+c

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐