乐趣区

关于linux:Linux-free-命令

在 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

退出移动版