当前位置: 首页 > Linux

每天学一个Linux命令(49):free

时间:2023-04-07 00:24:36 Linux

昨天推荐:每天学一个Linux命令(48):top命令介绍free命令用于显示内存使用情况,显示可用和已用总数物理内存和交换内存,以及内核使用的缓冲区。语法格式free[options]选项说明-b#以Byte为单位显示内存使用情况-k#以KB为单位显示内存使用情况-m#以MB为单位显示内存使用情况-g#以GB为单位显示内存使用情况-o#不显示缓冲区调整列-s#持续观察内存使用情况-t#显示内存总和列-V#显示版本信息应用实例查看内存使用总和[root@centos7~]#free-ttotalusedfreesharedbuff/cacheavailableMem:?????????995684??????124784??????473344????????7784??????397556??????698328Swap:???????2097148???????????0?????2097148Total:??????3092832??????124784?????2570492周期性打印出内存使用信息[root@centos7?~]#?free?-s?10??????????????total????????used????????free??????shared??buff/cache???availableMem:?????????995684??????124780??????473344????????7784??????397560??????698332Swap:209714802097148总使用的免费共享buff/Cacheavalemem:99568412478047334477847784397560698332SWAP:20971480209714802097148em:?????????995684??????124780??????473344????????7784??????397560??????698332Swap:???????2097148???????????0?????2097148??????????????total????????used????????free??????shared??buff/cache???availableMem:?????????995684??????124780??????473344????????7784??????397560??????698332Swap:???????2097148???????????0?????2097148显示内存使用情况[root@centos7?~]#?free?-m??????????????total????????used????????free??????shared??buff/CacheAvailableMem:9721214627388682SWAP:204702047结果信息如下:Total#MemoryandUSED#Thememoryofthememoryofidlememoryshad#iscurrentlyabandonedwithoutBuffer/Cache#/avaiLeable#s实际可用内存Linux在内存管理方面做得很好。系统运行一段时间后,会将暂时不用的内存转换成buff/cache,这样当程序使用到这部分数据时,可以快速取出,从而提高系统的运行效率。如果看到服务器剩余内存很少,不用担心,真正的剩余内存是free+buff/cache的总和,也就是实际可用内存。如果应用程序需要内存空间,Linux会让缓存被程序使用,从而最大限度地利用内存。当大量缓存占用内存空间时,应用程序会使用sawp交换分区,这会减慢系统的运行速度,影响整体运行效率。因此,这个时候,我们需要手动释放内存。释放内存时,首先执行命令sync,将内存中的所有buffer写入磁盘,包括修改后的文件inode、延迟块I/O和readWrite映射文件,从而保证文件系统的完整性。syncecho1>/proc/sys/vm/drop_cachesecho0>/proc/sys/vm/drop_cachesSwap指的是交换分区。当可用内存小于额定值时,将召开会议进行交换。额定值信息如下[root@centos7?~]#?cat?/proc/meminfoMemTotal:?????????995684?kBMemFree:??????????473460?kBMemAvailable:?????698452?kBBuffers:????????????2108?kBCached:???????????321280?kBSwapCached:????????????0?kBActive:???????????229996?kBInactive:?????????132264?kBActive(anon):??????39304?kBInactive(anon):7352?kBActive(file):?????190692?kBInactive(file):???124912?kBUnevictable:???????????0?kBMlocked:???????????????0?kBSwapTotal:???????2097148?kBSwapFree:????????2097148?kBDirty:?????????????????0?kBWriteback:?????????????0?kBAnonPages:?????????38904?kBMapped:????????????20988?kBShmem:??????????????7784?kBSlab:??????????????99432?kBSReclaimable:??????74176?kBSUnreclaim:????????25256?kBKernelStack:????????3728?kBPageTables:?????????3280?kBNFS_Unstable:??????????0?kBBounce:????????????????0?kBWritebackTmp:??????????0?kBCommitLimit:?????2594988?kBCommitted_AS:?????230116?kBVmallocTotal:???34359738367?kBVmallocUsed:??????177420?kBVmallocChunk:???34359310332?kBPercpu:????????????22528?kBHardwareCorrupted:?????0?kBAnonHugePages:??????8192?kBCmaTotal:??????????????0?kBCmaFree:???????????????0?kBHugePages_Total:???????0HugePages_Free:????????0HugePages_Rsvd:????????0HugePages_Surp:????????0Hugepagesize:???????2048?kBDirectMap4k:???????69504?kBDirectMap2M:??????978944?kBDirectMap1G:???????????0?kB每天学一个Linux命令(46):du每天学一个Linuxcommands(47):dfreplylearningcommandsinthebackgroundofthis公众号,youcanviewpreviousarticlestolearnLinuxsystemcommandssystematically