我使用过的Linux命令之free - 显示内存的使用情况
我使用过的Linux命令之free-显示内存的使用情况
用途说明
free命令用来显示内存使用情况。display information about free and used memory on the system。
常用参数
b 以字节为单位显示。
-k以K字节为单位显示。默认显示。
-m 以兆字节为单位显示。-s <seconds> 每隔多少秒重复执行。可编写一个脚本用于监控。
使用示例
示例一
[root@sunrise root]# free
totalusedfreesharedbufferscached
Mem:409142840731201830801127842564792
-/+buffers/cache:13955442695884
Swap:838588808385888
[root@sunrise root]#数值的单位是KBytes。
Mem开头的行:
total是指内存总数。比如这台机器4G内存,实际上已经扣除掉了作为显存的部分。
used是指操作系统已经使用的内存数。这部分既包括操作系统本身使用的部分,也包括应用程序已经使用的部分,还包括缓存的部分。
free是指操作系统还没有使用的内存数。我们通常看到这部分比较小。
shared已经废弃不用,总是显示0。
buffers和cached是指作为缓存的内存数。
-/+ buffers/cache开头的行:(重点看这行)
used列是指应用程序总共使用的内存数。等于Mem.used-Mem.buffers-Mem.cached。
free列是指应用程序还未使用的内存数。这个数据才是我们需要关注的空闲可用内存数。等于Mem.free+Mem.buffers+Mem.cached。
如果此行中free列的数据太小,那么就需要优化程序或者增加物理内存了。
示例二
[root@bbqztweb root]# free -s 60
totalusedfreesharedbufferscached
Mem:101653299632020212097964166716
-/+buffers/cache:731640284892
Swap:20402442815441758700
totalusedfreesharedbufferscached
Mem:101653299632820204097964166724
-/+buffers/cache:731640284892
Swap:20402442815441758700
totalusedfreesharedbufferscached
Mem:101653299646020072097964166724
-/+buffers/cache:731772284760
Swap:20402442815441758700
totalusedfreesharedbufferscached
Mem:101653299631620216097964166740
-/+buffers/cache:731612284920
Swap:20402442815441758700
[root@bbqztweb root]#示例三
free命令实际上是根据/proc/meminfo生成的。-/+ buffers/cache:这行是计算出来的。
[root@bbqztweb root]# free -b; cat /proc/meminfo
totalusedfreesharedbufferscached
Mem:10409287681017909248230195200100220928172040192
-/+buffers/cache:745648128295280640
Swap:20892098562883010561800908800
total:used:free:shared:buffers:cached:
Mem:10409287681017909248230195200100220928371302400
Swap:20892098562883010561800908800
MemTotal:1016532kB
MemFree:22480kB
MemShared:0kB
Buffers:97872kB
Cached:168008kB
SwapCached:194592kB
Active:667076kB
ActiveAnon:510760kB
ActiveCache:156316kB
Inact_dirty:125964kB
Inact_laundry:20508kB
Inact_clean:17308kB
Inact_target:166168kB
HighTotal:122044kB
HighFree:5564kB
LowTotal:894488kB
LowFree:16916kB
SwapTotal:2040244kB
SwapFree:1758700kB
CommitLimit:2548508kB
Committed_AS:1063004kB
HugePages_Total:0
HugePages_Free:0
Hugepagesize:2048kB
[root@bbqztweb root]#示例四
[root@bbqztweb root]# free -b -s 1 | grep 'buffers/cache:'
-/+buffers/cache:745574400295354368
-/+buffers/cache:745574400295354368
-/+buffers/cache:745574400295354368
Ctrl+C
[root@bbqztwebroot]#free-b-s1|grep'buffers/cache:'|awk'{print$4}'
Ctrl+C怪哉,没有显示任何输出。但下面的是可以输出东西的,难道管道线多了就不灵了?why?
[root@bbqztweb root]# free -b -s 1 | awk '{print $4}'
shared
22200320
295211008
1800908800
shared
22200320
295211008
1800908800
[root@bbqztweb root]#问题思考
1. free的输出结果中buffers和cached的含义?
2. free -b -s 1 | grep 'buffers/cache:' 可以打印出结果,free -b -s 1 | grep 'buffers/cache:' | awk '{print $4}' 却打印不出任何东西,为什么?
相关资料
【1】扶凯 linux的free命令详解-内存是拿来用的不是拿来看的
【2】脚本的甜品屋 linux free命令: 显示内存信息
【3】小菜linux free命令详解
【4】阿邙的收藏夹 Free命令详解和释放linux Cache
返回 我使用过的Linux命令系列总目录