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