在 Linux/Unix 零碎上,free 是一个很受系统管理员欢送的命令,它是一个功能强大的工具,他能以一种易读的形式把内存应用状况展现进去
free 展现了零碎中闲暇和曾经应用了的物理内存、替换内存以及内核的缓冲区和页面缓存,所有展现的信息都是从 /proc/meminfo 文件解析进去的
语法
free 命令的语法如下
free [options]
输入列阐明
当只输出 free 命令不带任何选项时,输入的内存和替换内存大小是以 KB(kbytes)为单位的, 具体的输入如下所示(在旧版的 Linux 零碎中,显示可能略有不同):
[root@ecs-centos-7 ~]# free
total used free shared buff/cache available
Mem: 1881544 325980 1307868 8712 247696 1406892
Swap: 0 0 0
total
总内存的大小,能够用于应用程序的内存
used
曾经应用内存,计算形式是:used = total – free – buff/cache
free
还没有应用的内存
shared
过程之间的共享内存
buff/cache
内核缓冲区和页面缓存,如果应用程序需要的话,能够随时回收这部分缓存,通过 free -w 命令能够别离显示 buff 和 cache 占用的内存
available
可用内存的预估大小,能够用于启动新的应用程序,理论利用中,能够把 free 和 buff/cache 加起来看做 available 的近似值,即 free + buff/cache ≈ available
罕用的选项
以下是一些罕用的选项
以易读的形式显示
[root@ecs-centos-7 ~]# free -h
total used free shared buffers cache available
Mem: 1881544 353752 881684 8712 147960 498148 1370492
Swap: 0 0 0
显示物理内存和替换内存的总和
[root@ecs-centos-7 ~]# free -t
total used free shared buff/cache available
Mem: 1881544 354108 881328 8712 646108 1370136
Swap: 0 0 0
Total: 1881544 354108 881328
每隔 N 秒输入一次
[root@ecs-centos-7 ~]# free -s 2
total used free shared buff/cache available
Mem: 1881544 353960 881476 8712 646108 1370284
Swap: 0 0 0
total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0
total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0
例子中的命令是每隔 2 秒输入一次内存信息,直到按 Ctrl + Z 进行
反复输入 N 次
[root@ecs-centos-7 ~]# free -c 3
total used free shared buff/cache available
Mem: 1881544 353960 881476 8712 646108 1370284
Swap: 0 0 0
total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0
total used free shared buff/cache available
Mem: 1881544 353984 881452 8712 646108 1370260
Swap: 0 0 0
下面的例子是反复输入内存信息 3 次,每次距离默认是 1 秒,如果要批改默认输入距离能够加上 -s 秒数, 上面的命令是:反复输入 3 次,每次输入距离 2 秒
free -c 3 -s 2
buff 和 cache 离开显示
[root@ecs-centos-7 ~]# free -w
total used free shared buffers cache available
Mem: 1881544 354100 881328 8712 147968 498148 1370144
Swap: 0 0 0
以 Bytes、KB、MB、GB 为单位输入
[root@ecs-centos-7 ~]# free -b
total used free shared buff/cache available
Mem: 1926701056 362446848 902631424 8921088 661622784 1403179008
Swap: 0 0 0
[root@ecs-centos-7 ~]# free -k
total used free shared buff/cache available
Mem: 1881544 354100 881328 8712 646116 1370144
Swap: 0 0 0
[root@ecs-centos-7 ~]# free -m
total used free shared buff/cache available
Mem: 1837 345 860 8 630 1338
Swap: 0 0 0
[root@ecs-centos-7 ~]# free -g
total used free shared buff/cache available
Mem: 1 0 0 0 0 1
Swap: 0 0 0
下面的例子中,别离以 Bytes、KB、MB、GB 为单位输入内存信息,会主动疏忽小于对应单位的数值,比方 free - g 命令,只有 total 和 available 列的值大于 1GB (1024 1024 1024 Bytes ), 其余列的值都是小于 1GB,所以 total 和 available 列显示 1,其余列都显示 0
理论还有多少可用内存
[root@ecs-centos-7 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 534M 100M 8.5M 1.3G 1.5G
Swap: 0B 0B 0B
在下面的示例中,如果只是看 used 以及 free 的话,会认为零碎可用内存曾经有余 100M,也即可应用内存不足 1% 了
实际上,曾经被应用程序应用的只有 27% 左右(534M / 1.8G), 应用程序可用内存是 availabe 或者 free + buff/cache,也就是说例子中理论可用于应用程序的内存有 1.5G 之多
内存什么时候告急
在平时的服务器监控内存的过程中,有以下几个信号是须要引起留神的
availabe 或者 free + buff/cache 靠近于 0 了
availabe 或者 free + buff/cache 示意理论应用程序的可用内存,如果它靠近于 0 的话,示意应用程序可用内存有余,须要尽快解决
已应用替换内存始终在增长
已应用替换内存始终增长的话,有可能是物理内存不足的前兆,当物理内存长时间有余的时候,才会频繁的应用替换内存,导致已应用替换内存始终增长
呈现 Out of memory
为了避免零碎物理内存不够用的时候零碎解体,当检测到内存不足时,零碎会 kill 掉最占用内存的过程,/var/log/message 中会记录 Out of memory 的日志
参考链接:
3 useful commands to check memory size in Linux