日期:2014-05-16  浏览次数:20534 次

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

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

本文链接:http://codingstandards.iteye.com/blog/780289 ?? (转载请注明出处)

用途说明

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