在Linux/Unix系统上,free是系统管理员非常流行的命令。它是一个功能强大的工具,可以以易于阅读的方式显示内存使用情况。使用的物理内存、交换内存、内核缓冲区和页面缓存。所有显示的信息都是从/proc/meminfo文件中解析出来的。free命令的语法如下。无选项时,输出内存和交换内存大小单位为KB(千字节),具体输出如下(在旧版Linux系统中,显示可能略有不同):[root@ecs-centos-7~]#FreeTotalUsedFreeSharedBuff/CacheAvailableMem:1881544325980130786887122406892SWAP:0000000TotalMemorysize可以用于应用程序的应用程序。free-buff/cache释放共享内存buff/cache共享进程之间的内核缓冲区和页面缓存。如果应用程序需要,可以随时回收这部分缓存。free-w命令可以分别显示buff和pagecachecache占用的内存是可用内存的估计大小,可以用来启动新的应用程序。在实际应用中,free和buff/cache相加可以看作available的近似值,即free+buff/cache≈available是常用的Options,这里将一些常用的options以人类可读的方式展示[root@ecs-centos-7~]#free-htotalusedfreesharedbufferscacheavailableMem:881684????8712???147960???498148??1370492Swap:??????0?????0?????0显示物理内存和交换内存的总和[root@ecs-centos-7~]#free-t???????total????used????free???shared?buff/cache?availableMem:????1881544???354108???881328????8712???646108??1370136Swap:??????0?????0?????0Total:???1881544???354108???881328每隔N秒输出一次[root@ecs-centos-7~]#free-s2???????total????used????free???shared?buff/cache?availableMem:????1881544???353960???881476????8712???646108??1370284Swap:??????0?????0?????0???????total????used????free???shared?buff/CacheAvailableMem:188154435398488145287126461081370260SWAP:0000TotalUSedFreeSharedBuff/CacheAvaiLeableMemem:18815443539848814528712871287126461081370260SWAP:00情况下的命令是每2秒输出一次内存信息直到Ctrl+Z停止重复输出N次[root@ECS-CENTOS-7~]#FREE-C3TotalUseFREEDBUFF/cacheavailableMem:1881544353960881476????8712???646108??1370284Swap:??????0?????0?????0???????total????used????free???shared?buff/cache?availableMem:????1881544???353984???881452????8712???646108??1370260Swap:??????0?????0?????0???????total????used????free???shared?buff/cache?availableMem:????1881544???353984???881452????8712???646108??1370260Swap:??????000Theaboveexampleis重复输出内存信息3次,默认间隔1秒。如果要修改默认的输出间隔,可以加上-s秒。下面的命令是:重复输出3次,每次输出间隔2秒free-c3-s2buff和cache分别显示[root@ecs-centos-7~]#free-wtotalusedfreesharedbufferscacheavailaBLEMEM:188154435410088132887121479684981481370144SWAP:00000以bytes,kbkb、mb、Mb、Mb、Mb、gb、Gb、gb为gb为gb为gb,[root@ecs-centos-7?]89210886616227841403179008SWAP:00[root@ecs-centos-7?]#免费-m总二手免费共享buff/cacheavalemem:183734586086301338swap:000[root@ecs-centos-7?]#free-gfree-g总二手使用的免费共享buff/cacheavailablEMEM:1000001SWAP:上例中以Bytes、KB、MB、GB的输出内存信息作为单位输出信息。available列的值大于1GB(102410241024Bytes),其他列的值都小于1GB,所以total和available列显示1,其他列显示0。内存是多少actuallyavailable[root@ecs-centos-7~]#FREE-HTotalUsedFreeSharedBuff/CacheAvailableMem:1.8G534M100M100M8.5M1.3G1.5GSWAP:0B0B0B在上面的例子中,如果你只看USED??andfree,你会认为系统可用内存不到100m,即可用内存不足1%。事实上,只有大约27%(534M/1.8G)已被应用程序使用。应用程序的可用内存是availabe或者free+buff/cache,意思是例子中其实是可用的由于应用程序的内存有1.5G之多,那么内存什么时候用完呢?服务器在正常监控内存的过程中,有以下信号需要注意。availabeorfree+buff/cache接近于0availabeorfree+buff/cache表示实际应用的可用内存。如果接近于0,说明应用可用内存不足,需要尽快处理。如果使用的交换内存不断增长,则可能是物理内存不足的迹象,当物理内存长期不足时,swap内存会被频繁使用,导致swap内存的使用一直在增长,出现Outofmemory,以防止系统耗尽物理内存当系统崩溃时,当检测到内存不足时,系统会杀掉最耗内存的进程,Outofmemory的日志会记录在/var/log/message参考链接:3个查看内存大小的有用命令Linux
