我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux系统命令free的使用方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux系统命令free的使用方法

这篇文章将为大家详细讲解有关Linux系统命令free的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Linux系统中free命令最主要的用途就是用来显示内存的状态,其中包括实体内存,虚拟的交换文件内存,共享内存区段等。

free命令使用

首先是要 free –help命令,来查看下free命令的用法。 Linux系统命令free的使用方法

 root@ubuntu116:~# free --help  Usage:  free [options]  Options:  -b, --bytes         show output in bytes  -k, --kilo          show output in kilobytes  -m, --mega          show output in megabytes  -g, --giga          show output in gigabytes      --tera          show output in terabytes  -h, --human         show human-readable output      --si            use powers of 1000 not 1024  -l, --lohi          show detailed low and high memory statistics  -o, --old           use old format (without -/+buffers/cache line)  -t, --total         show total for RAM + swap  -s N, --seconds N   repeat printing every N seconds  -c N, --count N     repeat printing N times, then exit       --help     display this help and exit  -V, --version  output version information and exit  For more details see free(1).  123456789101112131415161718192021222324

下面我们来测试下几个常用的options

2.1 free -b

Linux系统命令free的使用方法

root@ubuntu116:~# free -b
total used free shared buffers cached
Mem: 67529682944 64533520384 2996162560 213880832 351289344 58317025280
-/+ buffers/cache: 5865205760 61664477184
Swap: 68690112512 7532544 68682579968
您在 /var/mail/root 中有新邮件
root@ubuntu116:~#

2.2 free -k

Linux系统命令free的使用方法

root@ubuntu116:~# free -k
total used free shared buffers cached
Mem: 65946956 63518300 2428656 208900 343148 56952900
-/+ buffers/cache: 6222252 59724704
Swap: 67080188 7356 67072832
您在 /var/mail/root 中有新邮件
root@ubuntu116:~#

2.3 free -m

Linux系统命令free的使用方法

root@ubuntu116:~# free -m
total used free shared buffers cached
Mem: 64401 62458 1942 204 335 55618
-/+ buffers/cache: 6505 57895
Swap: 65507 7 65500
root@ubuntu116:~#

2.4 free -g

Linux系统命令free的使用方法

root@ubuntu116:~# free -g
total used free shared buffers cached
Mem: 62 60 1 0 0 54
-/+ buffers/cache: 6 56
Swap: 63 0 63
root@ubuntu116:~#

2.5 free -h

Linux系统命令free的使用方法

root@ubuntu116:~# free -h
total used free shared buffers cached
Mem: 62G 60G 2.2G 204M 336M 54G
-/+ buffers/cache: 6.1G 56G
Swap: 63G 7.2M 63G
root@ubuntu116:~#

2.6 free -l

显示详细的低内存和高内存统计信息 Linux系统命令free的使用方法

root@ubuntu116:~# free -l
total used free shared buffers cached
Mem: 65946956 63396736 2550220 209228 344632 56953528
Low: 65946956 63396736 2550220
High: 0 0 0
-/+ buffers/cache: 6098576 59848380
Swap: 67080188 7356 67072832
root@ubuntu116:~#

2.7 free -o

使用旧格式(没有 -/+buffers/cache 这一行)

Linux系统命令free的使用方法

root@ubuntu116:~# free -o
total used free shared buffers cached
Mem: 65946956 64045184 1901772 209256 344760 56969912
Swap: 67080188 7356 67072832
root@ubuntu116:~#

2.8 free -t

展示RAM和swap的合计 Linux系统命令free的使用方法

root@ubuntu116:~# free -t
total used free shared buffers cached
Mem: 65946956 64118724 1828232 209616 345348 56973588
-/+ buffers/cache: 6799788 59147168
Swap: 67080188 7356 67072832
Total: 133027144 64126080 68901064
root@ubuntu116:~#

2.9 free -s N

每相隔N秒重复打印一次内存信息,直到你按下 Ctrl + c

Linux系统命令free的使用方法

root@ubuntu116:~# free -s 3
total used free shared buffers cached
Mem: 65946956 64138880 1808076 209708 345616 56957708
-/+ buffers/cache: 6835556 59111400
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 64073124 1873832 209716 345616 56957720
-/+ buffers/cache: 6769788 59177168
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 64167628 1779328 209720 345616 56957732
-/+ buffers/cache: 6864280 59082676
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 64159796 1787160 209720 345620 56957728
-/+ buffers/cache: 6856448 59090508
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 64166776 1780180 209724 345628 56957740
-/+ buffers/cache: 6863408 59083548
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 63093948 2853008 209724 345632 56957756
-/+ buffers/cache: 5790560 60156396
Swap: 67080188 7356 67072832

2.10 free -c N

重复打印N次内存信息,然后退出

Linux系统命令free的使用方法

root@ubuntu116:~# free -c 3
total used free shared buffers cached
Mem: 65946956 64199120 1747836 209780 345744 56974404
-/+ buffers/cache: 6878972 59067984
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 63949560 1997396 209780 345744 56974404
-/+ buffers/cache: 6629412 59317544
Swap: 67080188 7356 67072832

total used free shared buffers cached
Mem: 65946956 64093104 1853852 209780 345744 56974408
-/+ buffers/cache: 6772952 59174004
Swap: 67080188 7356 67072832
root@ubuntu116:~#

2.11 free -V

显示版本号信息

Linux系统命令free的使用方法

 root@ubuntu116:~# free -V free from procps-ng 3.3.9 root@ubuntu116:~#

三、free命令输出内容名词解释

Linux系统命令free的使用方法

root@ubuntu116:~# free
total used free shared buffers cached
Mem: 65946956 64255040 1691916 213840 356892 56805760
-/+ buffers/cache: 7092388 58854568
Swap: 67080188 7356 67072832
root@ubuntu116:~#

3.1 Mem,-/+ buffers/cache,Swap 解释

我们看到free命令有三行内容:Mem,-/+ buffers/cache,Swap,代表的内容如下:

名称代表的内容
Mem内存的使用情况
-/+ buffers/cache表示物理内存已用多少,可用多少
Swap交换空间的使用情况

3.2 total,used,free,shared,buffers,cached 解释

列的内容是total,used,free,shared,buffers,cached,代表的内容如下:

名称代表的内容
total总量
used已使用的
free空闲的
shared共享的,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存一份
buffers缓存,可回收
cached缓存,可回收
  • 关于buffers和cached的区别 这里有个地方要注意,关于buffers和cached的区别。 关于free命令里面的cached、buffers的区别,下面一幅图可以表达: (图片引用自 https://blog.csdn.net/juS3Ve/article/details/79191634 宋宝华老师的博客) Linux系统命令free的使用方法

cached和buffers都可以读写,它们唯一的区别就是:buffers以裸设备或分区为背景,cached以文件系统里的文件为背景。

比如 cat /dev/sda1 > /dev/null,那/dev/sda1的内容进入buffers, 如果cat /opt/test.py > /dev/null,则/opt/test.py的内容进入cached

在有些时候buffer和cache这两个词经常混用。不过在一些比较低层的软件里是要区分这两个词的,看老外的洋文:

  • A buffer is something that has yet to be “written” to disk.

  • A cache is something that has been “read” from the disk and stored for later use. 也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。

Linux和其他成熟的操作系统(例如windows),为了提高IO read的性能,总是要多cache一些数据,这也就是为什么Mem这一行cached 比较大,而Mem这一行free 比较小的原因。

四、free命令输出内容计算公司

下面我们来计算一下free命令各个参数是怎么计算出来的,参考下面的图片 (图片引用自 https://blog.csdn.net/juS3Ve/article/details/79191634 宋宝华老师的博客) Linux系统命令free的使用方法

4.1 关于Mem这一行的total的计算公式

计算公式为 : total = used + free

Linux系统命令free的使用方法

 total (65946956) = used (64255040) + free (1691916)

比如本例中,Mem的used是64255040,free是1691916,加起来刚好是total的65946956.

4.2 关于 -/+ buffers/cache这一行的used的计算公式

free输出的第二行是从一个应用程序的角度看系统内存的使用情况。

-/+ buffers/cache这一行的used,即 -buffers/cache ,表示一个应用程序认为系统被用掉多少内存,实实在在吃掉的内存

计算公式为: -/+ buffers/cache的used = Mem这一行的used - Mem这一行的buffers - Mem这一行的cached

Linux系统命令free的使用方法

`-/+ buffers/cache的used (7092388) = Mem这一行的used (64255040) – Mem这一行的buffers (356892)- 去Mem这一行的cached (56805760)

比如本例中,-/+ buffers/cache的used是7092388,这个值是由Mem这一行的used 64255040,减去Mem这一行的buffers 356892,再减去Mem这一行的cached 56805760。

4.3 关于 -/+ buffers/cache这一行的free的计算公式

-/+ buffers/cache这一行的free,即 +buffers/cache ,表示一个应用程序认为系统还有多少内存,可以挪用的内存总数

计算公式为: -/+ buffers/cache的free = Mem这一行的free + Mem这一行的buffers + Mem这一行的cached

Linux系统命令free的使用方法

-/+ buffers/cache的free (58854568) = Mem这一行的free (1691916) + Mem这一行的buffers (356892) + Mem这一行的cached (56805760)

比如本例中,-/+ buffers/cache的free 是58854568,这个值是由Mem这一行的free 1691916,加上Mem这一行的buffers 356892,再加上Mem这一行的cached 56805760

因为被系统cache和buffer占用的内存可以被快速回收,所以通常-/+ buffers/cache这一行的free会比Mem这一行的free大很多。

4.4 关于Swap这一行的total的计算公式

计算公式为 : total = used + free

Linux系统命令free的使用方法

 total (67080188) = used (7356) + free (67072832)

比如本例中,Swap的used是7356,free是67072832,加起来刚好是total的67080188.

4.5 关于估算空闲的物理内存

估算空闲的物理内存时可参考-/+ buffers/cache的free的值,但实际的可用内存要小于这个值,因为不能所有的buffers和cached都释放。

我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关usedfree为什么这么奇怪?

其实我们可以从二个方面来解释.

操作系统来讲是Mem这一行的buffers/cached 都是属于被使用,所以它认为free只有1691916

应用程序来讲是-/+ buffers/cach。 buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

五 关于 buffer和cache

5.1 什么是buffer/cache?

buffer 和 cache 是两个在计算机技术中被用滥的名词,放在不通语境下会有不同的意义。

在 Linux 的内存管理中,这里的 buffer 指 Linux 内存的: Buffer cache 。这里的 cache 指 Linux 内存中的: Page cache 。翻译成中文可以叫做缓冲区缓存页面缓存。 在历史上,它们一个( buffer )被用来当成对 io 设备写的缓存,而另一个( cache )被用来当作对 io 设备的读缓存,这里的 io 设备,主要指的是块设备文件和文件系统上的普通文件。 但是现在,它们的意义已经不一样了。 在当前的内核中, page cache 顾名思义就是针对内存页的缓存,说白了就是,如果有内存是以 page 进行分配管理的,都可以使用 page cache 作为其缓存来管理使用。 当然,不是所有的内存都是以页( page )进行管理的,也有很多是针对块( block )进行管理的,这部分内存使用如果要用到 cache 功能,则都集中到 buffer cache 中来使用。(从这个角度出发,是不是 buffer cache 改名叫做 block cache 更好?)然而,也不是所有块( block )都有固定长度,系统上块的长度主要是根据所使用的块设备决定的,而页长度在 X86 上无论是 32 位还是 64 位都是 4k 。

明白了这两套缓存系统的区别,就可以理解它们究竟都可以用来做什么了。

5.2 什么是 page cache

Page cache 主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有 read / write 操作的时候。如果你仔细想想的话,作为可以映射文件到内存的系统调用: mmap 是不是很自然的也应该用到 page cache ?在当前的系统实现里, page cache 也被作为其它文件类型的缓存设备来用,所以事实上 page cache 也负责了大部分的块设备文件的缓存工作。

5.3 什么是 buffer cache

Buffer cache 则主要是设计用来在系统对块设备进行读写的时候,对块进行数据缓存的系统来使用。这意味着某些对块的操作会使用 buffer cache 进行缓存,比如我们在格式化文件系统的时候。一般情况下两个缓存系统是一起配合使用的,比如当我们对一个文件进行写操作的时候, page cache 的内容会被改变,而 buffer cache 则可以用来将 page 标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。这样,内核在后续执行脏数据的回写( writeback )时,就不用将整个 page 写回,而只需要写回修改的部分即可。

5.4 如何回收 cache ?

Linux 内核会在内存将要耗尽的时候,触发内存回收的工作,以便释放出内存给急需内存的进程使用。一般情况下,这个操作中主要的内存释放都来自于对 buffer / cache 的释放。尤其是被使用更多的 cache 空间。既然它主要用来做缓存,只是在内存够用的时候加快进程对文件的读写速度,那么在内存压力较大的情况下,当然有必要清空释放 cache ,作为 free 空间分给相关进程使用。所以一般情况下,我们认为 buffer/cache 空间可以被释放,这个理解是正确的。

但是这种清缓存的工作也并不是没有成本。理解 cache 是干什么的就可以明白清缓存必须保证 cache 中的数据跟对应文件中的数据一致,才能对 cache 进行释放。所以伴随着 cache 清除的行为的,一般都是系统 IO 飙高。因为内核要对比 cache 中的数据和对应硬盘文件上的数据是否一致,如果不一致需要写回,之后才能回收。

  • 人工触发缓存清除

在系统中除了内存将被耗尽的时候可以清缓存以外,我们还可以使用下面这个文件来人工触发缓存清除的操作:

 [root@tencent64 ~]# cat /proc/sys/vm/drop_caches

方法是:

 echo 1 > /proc/sys/vm/drop_caches

当然,这个文件可以设置的值分别为 1 、 2 、 3 。它们所表示的含义为:

 echo 1 > /proc/sys/vm/drop_caches

表示清除 pagecache 。

 echo 2 > /proc/sys/vm/drop_caches

表示清除回收 slab 分配器中的对象(包括目录项缓存和 inode 缓存)。 slab 分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的 pagecache 。

echo 3 > /proc/sys/vm/drop_caches 表示清除 pagecache 和 slab 分配器中的缓存对象。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

关于Linux系统命令free的使用方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux系统命令free的使用方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux系统命令free的使用方法

这篇文章将为大家详细讲解有关Linux系统命令free的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Linux系统中free命令最主要的用途就是用来显示内存的状态,其中包括实体内存
2023-06-28

Linux系统的free命令有什么用

这期内容当中小编将会给大家带来有关Linux系统的free命令有什么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存
2023-06-28

Linux系统使用Fuser命令的方法

什么是Fuser命令? fuser命令是一个非常聪明的unix实用程序,用于查找正在使用某个文件、目录或socket的进程。 它还提供有关拥有该进程的用户和访问类型的信息。。fuser工具显示了使用指定文件或文件系统的每个进程的进程ID(P
2022-06-03

Linux系统lsof命令的使用方法

Linux系统lsof命令的使用方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Linux系统中lsof命令是用于列出当前系统打开文件的工具,是一个非常方便的命令。lsof命
2023-06-28

Linux系统的dd命令的使用方法

这篇文章主要介绍“Linux系统的dd命令的使用方法”,在日常操作中,相信很多人在Linux系统的dd命令的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统的dd命令的使用方法”的疑惑有所
2023-06-12

Linux系统中df命令的使用方法

本篇内容主要讲解“Linux系统中df命令的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统中df命令的使用方法”吧!df 即“可用磁盘”disk free,用于显示文件系统
2023-06-12

Linux系统中file命令的使用方法

这篇文章主要讲解了“Linux系统中file命令的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中file命令的使用方法”吧!命令简介:该命令用来识别文件类型,也可用来
2023-06-12

Linux系统下wget命令的使用方法

本篇内容主要讲解“Linux系统下wget命令的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统下wget命令的使用方法”吧!一、Linux wget简介wget是linux
2023-06-12

Linux系统逻辑命令的使用方法

本篇内容主要讲解“Linux系统逻辑命令的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统逻辑命令的使用方法”吧!1.判断一个命令的结果使用test,其返回0,或一个整数。返
2023-06-13

linux系统中sed命令的使用方法

这篇文章给大家分享的是有关linux系统中sed命令的使用方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux中sed命令功能强大,今天我们就来详细介绍如何在Linux中使用sed命令进行替换,具体来说分
2023-06-10

Linux系统下findmnt命令的使用方法

本篇内容介绍了“Linux系统下findmnt命令的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Findmnt 命令用于查找挂载的
2023-06-12

linux系统下dd命令的使用方法

功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的 diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy
2022-06-04

Linux系统下chkconfig命令的使用方法

本篇内容介绍了“Linux系统下chkconfig命令的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!chkconfig命令可以用来
2023-06-12

linux中free命令怎么使用

本篇内容介绍了“linux中free命令怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,
2023-03-02

Linux系统中的curl命令的使用方法

本篇内容主要讲解“Linux系统中的curl命令的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统中的curl命令的使用方法”吧!命令:curl在Linux中curl是一个利
2023-06-12

Linux的free命令有什么用

这篇文章给大家分享的是有关Linux的free命令有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux free命令用于显示内存状态。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存
2023-06-27

如何在linux中使用free命令

如何在linux中使用free命令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.命令格式:free [参数]2.命令功能:free 命令显示系统使用和空闲的内存情况,包
2023-06-13

free命令怎么在linux中使用

free命令怎么在linux中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。命  令: free 功能说明:显示内存状态。 语  法: free [-bkmotV][-
2023-06-13

怎么在Linux中使用free命令

今天就跟大家聊聊有关怎么在Linux中使用free命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
2023-06-13

编程热搜

目录