Linux的free命令对于很多的Linux运维来说,应该是非常熟悉的了。但作为一个经常使用linux系统的小白来说,我们也需要了解一下free命令。
 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
 free命令的返回结果有4行:标题行、Mem、-/+buffers/cache、Swap,下面逐一了解。

1、Mem行
 显示物理内存情况。各列含义如下:
 total    -->内存总量
 used    -->使用内存
 free    -->可用内存
 shared    -->共享内存
 buffers    -->buffer缓存,可回收
 cached    -->cached缓存,可回收
 总内存=使用的+可用的:Mem.total = used+free
2、-/+buffers/cache行
 这里的buffers指Buffer cache(缓冲区缓存),cache指Page cache(页面缓存)。在当前的Linux内核中,Page cache是针对内存页的缓存。
 也就是说,如果有内存是以page进行分配管理的,都可以使用Page cache作为其缓存来管理使用。
 当然,不是所有的内存都是以页(page)进行管理的,也有很多是针对块(block),这部分内存使用如果要用到cache功能,则都集中到buffer cache中来使用。
 真实可用的内存:-/+buffers/cache.free
 (计算已使用内存时减去buffers/cache,计算可使用内存时加上buffers/cache。)
Mem行和buffers/cache行的各列计算关系如下:(M代表Mem行,B代表buffers/cache行)
 
3、Swap行
 显示交换空间使用情况。
 交换空间(swap space)是磁盘上的一块区域,可以是一个分区,也可以是一个文件。
 当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务。
 而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是常说的换出和换入。
 交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
4. free [-bkmgotV][-s <间隔秒数>]
 usage: free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V]
   -b,-k,-m,-g show output in bytes, KB, MB, or GB
   -h human readable output (automatic unit scaling)
   -l show detailed low and high memory statistics
   -o use old format (no -/+buffers/cache line)
   -t display total for RAM + swap
   -s update every [delay] seconds
   -c update [count] times
   -a show available memory if exported by kernel (>80 characters per line)
   -V display version information and exit
 参数说明:
 -b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。(默认free)
-m  以MB为单位显示内存使用情况。
 -g   以G为单位显示内存使用情况。
-h   自动取整数显示内存使用情况。
-o  不显示缓冲区调节列。 
 -t  显示内存总和列。
-a   显示available内存
-V  显示版本信息。
 -s<间隔秒数>  持续观察内存使用状况。

5秒查询一次,退出用ctrl+c

5. /proc/meminfo 文件
 其实free命令中的信息都来自于/proc/meminfo文件。/proc/meminfo文件包含了更多更原始的信息,只是看起来不太直观:
 cat /proc/meminfo
