`
zhaomengsen
  • 浏览: 207669 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

每天一个linux命令(45):free 命令

阅读更多
free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。
1.命令格式:
free [参数]
2.命令功能​:
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
3.命令参数:
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-g   以GB为单位显示内存使用情况。
#p#分页标题#e#-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。
4.使用实例:
实例1:显示内存使用情况
命令:
free
free -g
free -m
输出:
[root@SF1150 service]# free#p#分页标题#e#
             total       used       free     shared    buffers     cached
Mem:      32940112   30841684    2098428          0    4545340   11363424
-/+ buffers/cache:   14932920   18007192
Swap:     32764556    1944984   30819572
[root@SF1150 service]# free -g
             total       used       free     shared    buffers     cached
Mem:            31         29          2          0          4         10#p#分页标题#e#
-/+ buffers/cache:         14         17
Swap:           31          1         29
[root@SF1150 service]# free -m
             total       used       free     shared    buffers     cached
Mem:         32168      30119       2048          0       4438      11097
-/+ buffers/cache:      14583      17584
Swap:        31996       1899      30097
#p#分页标题#e#说明:
下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
#p#分页标题#e#第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如本机情况的可用内存为:
18007156=2098428KB+4545340KB+11363424KB

接下来解释什么时候内存会被交换,以及按什么方交换。
当可用内存少于额定值的时候,就会开会进行交换.如何看额定值:
命令:
cat /proc/meminfo
输出:
[root@SF1150 service]# cat /proc/meminfo
MemTotal:     32940112 #p#分页标题#e#kB
MemFree:       2096700 kB
Buffers:       4545340 kB
Cached:       11364056 kB
SwapCached:    1896080 kB
Active:       22739776 kB
Inactive:      7427836 kB
HighTotal:           0 kB
#p#分页标题#e#HighFree:            0 kB
LowTotal:     32940112 kB
LowFree:       2096700 kB
SwapTotal:    32764556 kB
SwapFree:     30819572 kB
Dirty:             164 kB
Writeback:           0 kB
AnonPages:    #p#分页标题#e#14153592 kB
Mapped:          20748 kB
Slab:           590232 kB
PageTables:      34200 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  49234612 kB
Committed_AS: 23247544 kB#p#分页标题#e#
VmallocTotal: 34359738367 kB
VmallocUsed:    278840 kB
VmallocChunk: 34359459371 kB
HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB

交换将通过三个途径来减少系统中使用的物理页面的个数: 
1.减少缓冲与页面cache的大小,
2.将系统V类型的内存页面交换出去, 
#p#分页标题#e#3.换出或者丢弃页面。(Application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不是影响到系统性能的。

那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。
#p#分页标题#e#所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准.
如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。

实例2:以总和的形式显示内存的使用信息
命令:
  free -t
输出:
[root@SF1150 service]#  free -t
             total       used       free     shared    buffers     cached
Mem:      32940112   30845024    2095088          0    4545340   11364324#p#分页标题#e#
-/+ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[root@SF1150 service]#

说明:

实例3:周期性的查询内存使用信息
命令:
free -s 10
输出:
[root@SF1150 service]#  free -s 10
#p#分页标题#e#            total       used       free     shared    buffers     cached
Mem:      32940112   30844528    2095584          0    4545340   11364380
-/+ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572
             total       used       free     shared    buffers     cached
Mem:      32940112   30843932    2096180          0    4545340   11364388
-/+ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572

说明:
#p#分页标题#e#每10s 执行一次命令
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0306/249.html?1457360628每天一个linux命令(45):free 命令
分享到:
评论

相关推荐

    linux命令整理:磁盘管理

    `lsblk`命令提供了一个简洁的方式来查看所有块设备的信息,包括设备名称、大小、挂载点等。它可以帮助你快速了解整个系统的磁盘布局。 对于文件系统的维护,`fsck`(file system check)命令必不可少。它能检查和...

    Linux命令大全完整版.pdf

    本文将详细解读《Linux命令大全完整版.pdf》中所收录的各类命令,以帮助读者更好地理解和运用Linux命令。 1. Linux系统管理命令 系统管理命令是Linux系统中最重要的命令类别之一,涵盖了用户管理、进程控制、系统...

    linux运维笔记:最常用的150个命令.docx

    Linux运维笔记是系统管理员和开发者不可或缺的一部分,这篇笔记总结了最常用的150个Linux命令,涵盖文件和目录操作、查看文件及内容处理、文件压缩及解压缩、信息显示、搜索文件、用户管理和基础网络操作等多个方面...

    linux命令分类总结

    5. free命令:free命令用于显示当前系统中的内存信息。它可以显示当前系统中的内存信息,并可以使用参数来设置显示的模式。 示例:free -m 网络管理命令 1. ping命令:ping命令用于测试网络连接。它可以测试网络...

    Linux系统命令top,ps,kill,free,vmstat等命令的源码

    3. **free命令**:`free`用来查看系统中的物理内存和交换内存的使用情况。通过分析源码,我们可以看到它是如何读取`/proc/meminfo`文件来获取内存统计数据的,以及如何计算和展示不同类型的内存(如已用、空闲、缓存...

    Linux应用技术:Linux系统命令.pptx

    项目3 Linux磁盘文件管理 第三讲 主要内容 Linux操作命令 Linux目录管理 Linux文件管理 拓展:管道和重定向 ...free命令 功能:查看当前系统内存的使用情况,包括系统中剩余和已用的物理内存和交换内存,

    Linux 必学的60个命令

    Linux 命令大全 Linux 操作系统提供了大量的命令,利用这些命令可以有效地完成大量的工作,如磁盘...这 60 个 Linux 命令是 Linux 操作系统中最基本和最常用的命令,掌握这些命令可以帮助用户更好地使用 Linux 系统。

    Linux必学的60个命令.docx

    "Linux必学的60个命令" Linux 系统提供了大量的命令,利用这些命令可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。因此,在 Linux 系统上工作离不开使用系统提供的命令。要...

    Linux上的free命令详解

    在Linux系统中,`free`命令是一个非常实用的工具,用于查看系统内存的状态,包括物理内存(RAM)和交换空间(Swap)。通过分析`free`命令的输出,我们可以获取到系统内存使用的详细信息,这对于系统管理员监控和优化...

    linux命令手册.pdf

    以上只是Linux命令手册中的一部分内容,实际上,手册还包括更多的系统管理命令,如文件和目录操作(如`ls`, `cd`, `mv`, `rm`等),文件权限和所有权(`chmod`, `chown`, `chgrp`),网络管理(`ifconfig`, `ping`, ...

    Linux常用经典命令(面试宝典)

    5. mv 命令:为文件、目录改名或者将文件由一个目录移动到另一个目录。 6. rm 命令:删除文件,使用 -rf 选项可以强制删除文件。 7. chmod 命令:改变文件的存取模式,使用数值表示法或符号表示法。 目录管理命令 ...

    Linux性能检查命令总结

    Linux 性能检查命令总结 Linux 性能检查命令总结是指在 Linux 服务器出现性能问题时,使用的一些命令来快速定位和解决问题。这包括内存瓶颈、CPU 瓶颈、网络瓶颈、磁盘瓶颈和应用瓶颈等方面的命令。 内存瓶颈 在...

    linux命令详解阿手册PDF文档

    《Linux命令详解手册》是一份全面的Linux命令参考资料,它详细介绍了Linux系统中广泛使用的一系列命令,覆盖了系统管理、系统设置、文档编辑以及压缩备份等多个方面。为了方便用户查阅,该手册按照命令的功能进行了...

    Linux必学的60个命令

    ### Linux必学的60个命令详解 #### 一、登录与退出命令 **1. login** - **功能概述:** `login` 命令用于登录系统,并切换到指定用户的身份。 - **命令格式:** `login [name] [p] [h]` - `[name]`:指定用户名,...

    Linux菜鸟必学的60个命令

    Linux 作为一种开源操作系统,为用户提供了大量的命令,通过这些命令,可以高效地完成各种工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。下面是 Linux 命令的详细介绍: 安装和登录命令 1. ...

    Linux常用必会60个命令实例详解

    Linux 作为一个开源的操作系统,提供了大量的命令,利用这些命令可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。为了真正理解 Linux 系统,就必须从 Linux 命令学起,通过...

    linux-Linux命令大全内容包含Linux命令手册详解学习搜集

    本资源"Linux命令大全"包含了516个Linux命令的详细资料,对于学习和理解Linux操作系统至关重要。下面,我们将深入探讨这个资源中涉及的一些关键知识点。 1. **命令手册**: - 在Linux世界中,命令手册(man pages...

    linux常用命令.pdf

    本文档总结了 Linux işletim sisteminin 中的常用命令,涵盖了基本命令、文件和目录操作命令、文本文件查看命令、光盘驱动器设备文件操作命令等多个方面。 一、基本命令 Linux 系统中有很多基本命令,包括: * ...

    linux命令 linux教程

    以下是一些常用的Linux命令及其功能详解: 1. `adduser`命令:这个命令用于在Linux系统中添加新的用户账户。它会创建一个用户主目录,并设定初始的用户权限。 2. `apmd`命令:高级电源管理(Advanced Power ...

    Linux命令大全完整版

    Linux 命令大全完整版 Linux 系统管理命令是 Linux 操作系统中最重要的一部分,掌握这些命令可以帮助用户...这些命令只是 Linux 系统管理命令中的一个小部分,掌握这些命令可以帮助用户更好地管理和维护 Linux 系统。

Global site tag (gtag.js) - Google Analytics