Linux free命令

我的Linux系统上有多少可用RAM内存?是否有足够的可用内存来安装和运行新应用程序?在Linux系统中,可以使用free命令获取内存使用情况报告

6 min read
By myfreax
Linux free命令

我的Linux系统上有多少可用RAM内存?是否有足够的可用内存来安装和运行新应用程序?在Linux系统中,可以使用free命令来获取系统内存使用情况的详细报告。

free命令提供物理内存和交换空间总量以及系统中的可用和已用内存以及交换空间的信息。在本教程中,我们将说明如何使用free命令。包括free命令语法与选项。free输出列与行数据说明,以M/GB显示内存使用情况。显示列总计数。指定延时打印free命令的结果。指定连续打印free命令结果的次数。

如果你是新手,在阅读本教程之前我们建议阅读我们另外两篇教程。分别是:空闲内存与可用内存的区别Linux性能:为什么你应该添加交换空间swap。以更好的管理内存。

Free空闲内存与可用内存的区别 | myfreax
有时我们需要准确地知道我们的Linux系统如何使用内存。本文将研究如何使用free命令行程序查看Linux系统上的内存使用情况。我们将清楚地定义Linux系统上空闲Free内存和可用内存之间的区别
有swap空间与没有swap交换空间。有足够的可用内存,删除交换空间是否更好? 了解swap交换空间的性能优势 | myfreax
即使仍有可用的RAM,Linux内核也会将几乎从未使用过的内存页移动到交换空间中。将经常使用的数据保留在缓存中,服务器最空闲的时候,这是内核的目标。避免将交换空间设置得太大,中断或响应时间延长。Swap I/O的性能很差。服务器空闲时无法交换内存页,则应调整或禁用Swap。禁用Swap后,OOM杀手可能会抓住你

free命令语法与选项

free命令的语法如下:

free [OPTIONS]

不带任何选项使用时,free命令将显示内存的信息并以kibibyte单位。1 kibibyte(KiB)是1024字节。

free

输出将包含三行分别是:标题行,内存行,交换空间行:

              total        used        free      shared  buff/cache   available
Mem:        8075208     3204964     1310540      551232     3559704     4198340
Swap:       2097148           0     2097148

在较早的Linux版本中,输出可能会略有不同。

每列的含义如下:

总数total,此数字表示应用程序可以使用的内存总量。已使用used,此数字表示已使用的内存。计算公式为:used = total - free - buffers - cache

空闲free此数字表示空闲/未使用的内存。shared此列无意义,可以忽略。在这里是为了向后兼容。

buff/cache此数字表示内核缓冲区以及页面高速缓存和Slab分配使用的内存组合。如果应用程序需要,可以随时回收此内存。如果要将缓冲区和缓存显示在两个单独的列中,请使用-w选项。

可用available此数字表示估计可用于启动新应用程序而无需swap空间的内存量。

以M/GB显示内存使用情况

正如我们在上面的示例中看到的那样,默认情况下,free命令以kibibyte为单位显示内存信息。要以以M/GB显示内存信息,请使用以下-h选项:

free -h
              total        used        free      shared  buff/cache   available
Mem:           487M        219M         54M        4.5M        214M        228M
Swap:          1.5G          0B        1.5G

显示内存使用情况相关选项

free命令还允许您指定评估内存的单位。有效选项包括:

-b--bytes以字节为单位显示输出。--kilo显示输出以千字节为单位,即1KB。--mega以兆字节显示输出,即1MB。--giga以GB为单位显示输出。--tera以TB为单位显示输出。--peti -显示输出以PB为单位。

例如,要以MB兆字节显示输出,请输入:

free --mega
              total        used        free      shared  buff/cache   available
Mem:           8075        4022         233         614        3819        3336
Swap:          2097           0        2097

显示列总计

要显示列总计的行,请使用-t选项。这将为您提供总和,已用和可用列中的内存和交换空间的总数。

free -h -t
              total        used        free      shared  buff/cache   available
Mem:           7.7G        3.9G        483M        526M        3.4G        3.2G
Swap:          2.0G          0B        2.0G
Total:         9.7G        3.9G        2.5G

持续打印输出

要在屏幕上连续一直打印内存信息,请使用-s--seconds选项,后跟一个指定延时的数字。例如,要每五秒钟打印一次内存信息,请运行:

free -s 5

free命令将继续显示结果,直到您按下为止CTRL+C。这类似于watch 命令的行为。要显示指定次数的结果,请使用-c--count选项。在下面的示例中,命令将打印free命令的十次结果:

free -s 5 -c 10

结论

到目前为止,您应该对如何使用和解释free命令有了很好的了解。要查看所有可用的free命令行选项,请在终端中键入man free