在面试开发或者运维岗的时候,面试官可能会问:

Linux怎么查看cpu、内存、磁盘的使用率?

简单点来回答,就是top、free、df这三个命令。

如果想在多核Linux系统中计算cpu使用总和,可以使用sar命令。

NO.1 sar

sar -u 1 3
# 查看cpu总的使用情况,每秒刷新一次,共3次

示例如下:

[root@yaomm ~]# sar -u 1 3
Linux 3.10.0-957.21.3.el7.x86_64 (yaomm)    04/18/2020  _x86_64_    (2 CPU)

03:07:00 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:07:01 PM     all      1.00      0.00      0.50      0.00      0.00     98.50
03:07:02 PM     all      0.50      0.00      1.00      0.00      0.00     98.50
03:07:03 PM     all      1.00      0.00      0.50      0.00      0.00     98.50
Average:        all      0.83      0.00      0.67      0.00      0.00     98.50

NO.2 top

top命令可以用于实时监控cpu的状态,显示系统中各个进程的资源占用情况。
常用命令示例:

top
# 对,无参数的top命令是最长用的资源监控命令。

[root@VM_0_3_centos ~]# top
top - 23:03:23 up 127 days, 13:56,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.7 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3882032 total,   145996 free,   283752 used,  3452284 buff/cache
KiB Swap:  2097148 total,  1422392 free,   674756 used.  3218052 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
964 redis     20   0  142960   7244    988 S   0.3  0.2 168:01.87 redis-server 
15515 root    20   0  260068 123108   3988 S   0.3  3.2  20:12.97 YDService 
30378 root    20   0  155536   2132   1540 R   0.3  0.1   0:00.06 top     
…………
# 后面还有很多内容,省略了

查看进程的cpu、内存占比主要就是看第七行下的这两列参数:

%CPU # 占用CPU百分比
%MEM # 占用物理内存百分比

如果想看每个cpu的使用率,使用命令top后按1就可以查看每个cpu的使用情况。

%Cpu0  :  1.0 us,  0.7 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.7 us,  0.7 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

NO.3 free

一台电脑、服务器,内存、存储(磁盘)、处理器(cpu)、操作系统是最基本的组成。

free就是用来监视linux系统使用内存的命令。

常用命令:

free -h
# 以人类可读方式展示内存使用情况,根据实际大小自动转换为KB、MB、GB

示例:

[root@yaomm ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        2.1G        147M        1.6M        1.4G        1.3G
Swap:            0B          0B          0B

注意:available才是可用内存。

在以前没有available这个展示字段的时候,我们通常是将 free + buff/cache 的总量作为可用内存。

linux系统的特性就是将不用的物理内存缓存起来,因为千万以为free的147M内存就是真实的系统剩余内存了。所以当前可用内存为available:1.3G。

NO.4 df

df命令可以说linux上最常用的命令之一,因为一旦磁盘空间不够就会出现各种故障,数据库、应用都可能会处于瘫痪状态。

常用命令示例:

df -h
# 以适合人类阅读的方式展示磁盘空间大小,一般以G为单位

df -i
# -i : 显示inode的使用情况

df -Th
# -T:查看文件系统类型

注意:linux文件有个inode的文件数量限制,一旦无可用inode,则无法再产生新的文件,会在磁盘空间未满的情况下报“No space left on device”,解决方案是删除无用(多天前)的小文件或者log文件。

思考题

top命令的结果中,1-5行分别是什么意思呢?是表示系统的什么状态呢?