代码编织梦想

top命令使用介绍

top 命令能够实时显示系统中各个进程的资源占用状况,其命令语法格式如下:

top [选项]

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

常用参数如下:

-d number		:表示指定每隔多少秒显示一次,默认是5秒;
-p 				:指定查看某个进程;如 top -p 2016
-u				:指定查看某个用户;如 top -u jenkins
-n 				:设置退出前屏幕刷新的次数;如 top -bn 1
-b 				:将top信息编排成适合输出到文件,需要与-n刷新参数配合;如 top -bn 1
[root@master ~]# top
top - 09:57:49 up 2 days, 16:00,  2 users,  load average: 0.10, 0.19, 0.22
Tasks: 158 total,   1 running, 157 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.6 us,  2.1 sy,  0.0 ni, 95.9 id,  0.2 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  1863032 total,    90792 free,  1017648 used,   754592 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   662684 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                              
   2972 root      20   0 1107860 294168  28336 S   8.3 15.8 510:47.49 kube-apiserver                                                                                                                                                       
1263580 root      20   0  823020  84096  36224 S   4.3  4.5  19:38.83 kube-controller                                                                                                                                                      
   1199 root      20   0 1829684  76572  24964 S   4.0  4.1 279:50.16 kubelet                                                                                                                                                              
   2738 root      20   0   10.7g  59376  14008 S   2.0  3.2 137:48.12 etcd                                                                                                                                                                 
   1451 root      20   0 1359316  65896   9328 S   1.0  3.5  98:08.62 dockerd                                                                                                                                                              
1263592 root      20   0  754048  38160  19616 S   0.7  2.0   2:34.95 kube-scheduler                                                                                                                                                       
      9 root      20   0       0      0      0 S   0.3  0.0  19:48.35 rcu_sched                                                                                                                                                            
     14 root      20   0       0      0      0 S   0.3  0.0   3:03.59 ksoftirqd/1                                                                                                                                                          
    441 root      20   0       0      0      0 S   0.3  0.0   7:14.34 xfsaild/dm-0
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				进程名

进程优先级

什么时候要用到进程的优先级呢?当cpu负载过高是,如cpu使用率>=90%以上,这个时候进程的优先级就会起作用。

PR					优先级,数值越小优先级越高
NI					优先级,数值越小优先级越高,取值-20至19,默认0(NI是NICE的缩写)
注意:我们只能修改的是NI的优先级,不能修改PR

修改进程的优先级–使用top命令

1、top命令查看要调整的进程,假设要调整pid为2606的进程的NI优先级

[root@nginx ~]# top
top - 09:53:16 up 2 days, 21:22,  2 users,  load average: 0.04, 0.03, 0.05
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3861280 total,   445496 free,  2176488 used,  1239296 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1375040 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   
   1112 root      20   0  338544   4804   3656 S   0.3  0.1  11:10.86 vmtoolsd  
   2606 jenkins   20   0 4878504   1.3g  24416 S   0.3 35.0  19:25.06 java         
      1 root      20   0  199912   4728   2620 S   0.0  0.1   2:46.78 systemd 
      2 root      20   0       0      0      0 S   0.0  0.0   0:02.88 kthreadd 

2、输入r,然后输入进程的pid后按回车

[root@nginx ~]# top
top - 09:56:31 up 2 days, 21:25,  2 users,  load average: 0.11, 0.06, 0.05
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
%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
KiB Mem :  3861280 total,   445372 free,  2176612 used,  1239296 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1374916 avail Mem 
PID to renice [default pid = 1] 2606									#输入r后这里会提示你输入要调整的进程的pid后按回车
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
   1112 root      20   0  338544   4804   3656 S   0.3  0.1  11:10.86 vmtoolsd  
   2606 jenkins   20   0 4878504   1.3g  24416 S   0.3 35.0  19:25.06 java 
      1 root      20   0  199912   4728   2620 S   0.0  0.1   2:46.78 systemd
      2 root      20   0       0      0      0 S   0.0  0.0   0:02.88 kthreadd

3、输入优先级,数值范围-20至19,数值越低,表示优先级越高

[root@nginx ~]# top
top - 09:56:31 up 2 days, 21:25,  2 users,  load average: 0.11, 0.06, 0.05
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
%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
KiB Mem :  3861280 total,   445372 free,  2176612 used,  1239296 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1374916 avail Mem 
Renice PID 2606 to value :-5									#输入数值-5后按回车
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
   1112 root      20   0  338544   4804   3656 S   0.3  0.1  11:10.86 vmtoolsd  
   2606 jenkins   15  -5  4878504   1.3g  24416 S   0.3 35.0  19:25.06 java 	#NI优先级已经改变了,同时PR也跟着改变了
      1 root      20   0  199912   4728   2620 S   0.0  0.1   2:46.78 systemd
      2 root      20   0       0      0      0 S   0.0  0.0   0:02.88 kthreadd

修改进程的优先级–使用renice命令

1、查看进程的优先级(可以通过ps -ef 、netstat -lnutp、top命令都能查看到你想要查看的进程的pid)

[root@nginx ~]# top -p 2606						#top -p查看指定进程的信息
top - 10:13:24 up 2 days, 21:42,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%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
KiB Mem :  3861280 total,   444604 free,  2177376 used,  1239300 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1374152 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
   2606 jenkins   15  -5 4878504   1.3g  24416 S   0.3 35.0  19:27.70 java     #查看现在进程的优先级NI的值为-5

2、使用renice命令调整进程的优先级

[root@nginx ~]# renice --help			#查看renice命令的使用帮助

Usage:
 renice [-n] <priority> [-p|--pid] <pid>...
 renice [-n] <priority>  -g|--pgrp <pgid>...
 renice [-n] <priority>  -u|--user <user>...

Options:
 -g, --pgrp <id>        interpret argument as process group ID
 -n, --priority <num>   specify the nice increment value
 -p, --pid <id>         interpret argument as process ID (default)
 -u, --user <name|id>   interpret argument as username or user ID
 -h, --help             display help text and exit
 -V, --version          display version information and exit

For more information see renice(1).

[root@nginx ~]# renice -n -15 -p 2606							#调整进程的NI的优先级为-15
2606 (process ID) old priority -5, new priority -15
[root@nginx ~]# top -p 2606          							#再次查看进程的信息
top - 10:19:08 up 2 days, 21:48,  2 users,  load average: 0.08, 0.03, 0.05
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%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
KiB Mem :  3861280 total,   443984 free,  2177996 used,  1239300 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1373532 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
   2606 jenkins    5 -15 4878504   1.3g  24416 S   0.3 35.0  19:28.63 java	#查看现在进程的优先级NI的值为-15
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MssGuo/article/details/126916612