您的位置:首页 > 运维架构 > Linux

Linux命令之free - 显示内存的使用情况

2013-08-04 19:38 841 查看

用途说明

free命令用来显示内存使用情况。display information about free and used memory on the system。

常用参数

b 以字节为单位显示。
-k 以K字节为单位显示。默认显示。
-m 以兆字节为单位显示。
-s <seconds> 每隔多少秒重复执行。可编写一个脚本用于监控。

使用示例

示例一

[root@sunrise root]# free
total used free shared buffers cached
Mem: 4091428 4073120 18308 0 112784 2564792
-/+ buffers/cache: 1395544 2695884
Swap: 8385888 0 8385888
[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
total used free shared buffers cached
Mem: 1016532 996320 20212 0 97964 166716
-/+ buffers/cache: 731640 284892
Swap: 2040244 281544 1758700

total used free shared buffers cached
Mem: 1016532 996328 20204 0 97964 166724
-/+ buffers/cache: 731640 284892
Swap: 2040244 281544 1758700

total used free shared buffers cached
Mem: 1016532 996460 20072 0 97964 166724
-/+ buffers/cache: 731772 284760
Swap: 2040244 281544 1758700

total used free shared buffers cached
Mem: 1016532 996316 20216 0 97964 166740
-/+ buffers/cache: 731612 284920
Swap: 2040244 281544 1758700

[root@bbqztweb root]#

示例三

free命令实际上是根据/proc/meminfo生成的。-/+ buffers/cache:这行是计算出来的。[root@bbqztweb root]# free -b; cat /proc/meminfo
total used free shared buffers cached
Mem: 1040928768 1017909248 23019520 0 100220928 172040192
-/+ buffers/cache: 745648128 295280640
Swap: 2089209856 288301056 1800908800
total: used: free: shared: buffers: cached:
Mem: 1040928768 1017909248 23019520 0 100220928 371302400
Swap: 2089209856 288301056 1800908800
MemTotal: 1016532 kB
MemFree: 22480 kB
MemShared: 0 kB
Buffers: 97872 kB
Cached: 168008 kB
SwapCached: 194592 kB
Active: 667076 kB
ActiveAnon: 510760 kB
ActiveCache: 156316 kB
Inact_dirty: 125964 kB
Inact_laundry: 20508 kB
Inact_clean: 17308 kB
Inact_target: 166168 kB
HighTotal: 122044 kB
HighFree: 5564 kB
LowTotal: 894488 kB
LowFree: 16916 kB
SwapTotal: 2040244 kB
SwapFree: 1758700 kB
CommitLimit: 2548508 kB
Committed_AS: 1063004 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
[root@bbqztweb root]#

示例四

[root@bbqztweb root]# free -b -s 1 | grep 'buffers/cache:'
-/+ buffers/cache: 745574400 295354368
-/+ buffers/cache: 745574400 295354368
-/+ buffers/cache: 745574400 295354368
Ctrl+C
[root@bbqztweb root]# free -b -s 1 | 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}' 却打印不出任何东西,为什么?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: