我使用过的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命令系列总目录

相关推荐