![“free”命令不显示正确的值](https://linux22.com/image/132645/%E2%80%9Cfree%E2%80%9D%E5%91%BD%E4%BB%A4%E4%B8%8D%E6%98%BE%E7%A4%BA%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%80%BC.png)
我们的一台机器 redhat 7.2 上遇到了一个非常奇怪的问题。
它怎么可能是免费的 - 0 ,而已使用的却是总数 47 中的 43 ?
[root@master ~]# free -g
total used free shared buff/cache available
Mem: 47 43 0 0 3 3
Swap: 7 5 1
[root@master ~]# free -k
total used free shared buff/cache available
Mem: 49552508 45570336 296216 237396 3685956 3510224
Swap: 8093692 6053196 2040496
从top
:
top - 17:34:40 up 10:39, 2 users, load average: 0.77, 0.81, 0.83
Tasks: 789 total, 1 running, 788 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.7 us, 0.4 sy, 0.0 ni, 97.7 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 49552508 total, 831304 free, 45669236 used, 3051968 buff/cache
KiB Swap: 8093692 total, 2056872 free, 6036820 used. 3412568 avail Mem
答案1
您看错了栏目。在第一个输出中,空闲内存即可用于新应用程序的 RAM(没有任何交换使用)显示在available
列中。这会正确报告 3 Gb,或 3510224 Kb。
47 Gb - 43 Gb =(有舍入误差)3 Gb
Linux 借用任何未使用的内存进行磁盘缓存,这就是您在该free
列中看到零的原因。但是,一旦其他应用程序请求分配给磁盘缓存的内存,就会立即释放它。