Linux命令详解之–free命令

Linux free命令 是Linux系统中另外一个常用的系统管理命令,用于显示内存状态。

free命令 会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

更多Linux命令详情请看:Linux命令速查手册

free命令

一、Linux free命令 语法

free [-b | -k | -m] [-o] [-s delay ] [-t] [-l] [-V]

参数说明:

-b  以Byte为单位显示内存使用情况。 

-k  以KB为单位显示内存使用情况。 

-m  以MB为单位显示内存使用情况。 

-o  不显示缓冲区调节列。 

-s<间隔秒数>  持续观察内存使用状况。 

-t  显示内存总和列。 

-V  显示版本信息。

二、Linux free命令 使用实例

1)显示内存使用情况

[linuxdaxue.com@/home/linuxdaxue.com]$free
             total       used       free     shared    buffers     cached
Mem:       1018600     309992     708608          0      14192      67412
-/+ buffers/cache:     228388     790212
Swap:            0          0          0
[linuxdaxue.com@/home/linuxdaxue.com]$free -m
             total       used       free     shared    buffers     cached
Mem:           994        302        692          0         13         65
-/+ buffers/cache:        223        771
Swap:            0          0          0

说明:

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

第三行(-/+ buffers/cached):

used:已使用多大。

free:可用有多少。

第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。

区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用。

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

2)以总和的形式显示内存的使用信息

[linuxdaxue.com@/home/linuxdaxue.com]$free -t
             total       used       free     shared    buffers     cached
Mem:       1018600     409764     608836          0      14652      67660
-/+ buffers/cache:     327452     691148
Swap:            0          0          0
Total:     1018600     409764     608836

3)周期性查询内存使用信息

[linuxdaxue.com@/home/linuxdaxue.com]$free -s 10
             total       used       free     shared    buffers     cached
Mem:       1018600     495000     523600          0      15020      68896
-/+ buffers/cache:     411084     607516
Swap:            0          0          0

             total       used       free     shared    buffers     cached
Mem:       1018600     496296     522304          0      15036      68904
-/+ buffers/cache:     412356     606244
Swap:            0          0          0

^C
[linuxdaxue.com@/home/linuxdaxue.com]$

说明:这个命令会每隔十秒钟周期性查询一次内存信息。

三、附录:buffers和cached的区别

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。

前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。

Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。

文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。

当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。

Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。

简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。

在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少。如果常常swap用很多,可能你就要考虑加物理内存了。这也是linux看内存是否够用的标准.

如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。

好了,有关Linux free命令 的相关知识就先为大家介绍到这里,更多Linux命令详情请看:Linux命令速查手册

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: