Linux free命令显示您的计算机有多少内存正在使用,还有多少内存可供程序使用。它的输出可能会让新手感到困惑,但我们将向您展示如何理解它。
free命令在终端窗口中打印内存使用情况的快速摘要。它没有太多的选择和技巧,也不需要花太多的时间和精力去学习如何使用它。然而,要学会正确解释它所提供的信息就另当别论了。很容易被自由告诉你的东西弄糊涂。
这部分是由于术语“free”和“available”之间的区别,部分是由于Linux内核的内存和文件系统管理例程的内部工作方式。如果您有空闲内存,内核可以很好地利用它,它将借用它用于自己的目的。直到你需要它回来。
我们将深入研究底层机制和数据例程,以便您能够了解引擎盖下发生了什么,以及所有这些如何影响随机存取存储器(RAM)的使用。
让我们毫无选择地自由开火,看看能得到什么:
free用一种丑陋的方式包裹着。在您的计算机上,您可以拉伸终端窗口。下面是一个更整洁的表格中的输出:
total used free shared buff/cache available Mem: 2038576 670716 327956 14296 1039904 1187160 Swap: 1557568 769096 788472这些数字以kibibytes表示,即1024字节。在Manjaro上,free命令别名为free-m。这强制free使用mebibytes,即1048576字节。在其他发行版上,默认值是kibibytes。
顶行报告系统内存,底行报告交换空间。我们将在这里介绍这些列,稍后将更详细地介绍它们。内存行的列如下所示:
对于交换行,列为:
要将Buff/cache图形分隔为各自的列,请使用-w(宽)选项:
free -w这就是结果。我们得到的不是Buff/cache列,而是Buffers列和cache列。以下是表格中的数字:
total used free shared buffers cache available Mem: 2038576 683724 265708 14660 94568 994596 1160420 Swap: 1557568 761416 796152让我们看看这些列中的数字代表什么。
这个很简单。这是多少内存你已经安装在你的主板上。这是所有正在运行的进程都在争夺的宝贵资源。如果内核不是裁判,至少他们会打架。
顺便说一下,free收集信息的地方是/proc/meminfo伪文件。您可以使用以下命令自己查看此文件:
less /proc/meminfo输出是名称和值的单个列表。
这就是它开始变得有趣的地方。
所用的数字代表你可能期望的,加上一堆其他的东西。这是分配给进程的内存,由用户程序使用,并由GNOME或KDE桌面环境等使用。没什么奇怪的。但它也包括缓冲区和缓存数据。
没有被用来做某事的内存是浪费的内存。内核使用空闲的RAM来保存高速缓存和缓冲区,使其能够更高效地运行。所以这个RAM被内核用来做一些事情,而不是被用户空间中的任何东西使用。
如果接收到的内存请求只能通过放弃内核为自己的设备使用的一些RAM来提供服务,那么这就是发生的,无缝的。释放这个RAM并将其用于其他应用程序不会影响Linux系统的正确操作不会有任何问题,但它可能会影响系统的性能。
所以这个专栏真正的意思是“被某物使用的所有RAM,即使它可以立即被回收。”
此列包含未被任何对象使用的RAM数量的数字。因为Used列包含缓冲区和缓存数据,所以对于功能完善的Linux系统来说,很少有RAM被列为“free”
这不一定是一件坏事,而且几乎可以肯定的是,这意味着您拥有一个功能完美的系统,可以正确地调节RAM的使用。也就是说,RAM正被应用程序和其他用户空间进程以及内核用来尽可能提高计算机的性能。
Shared列中的数字表示用于保存基于tmpfsram的文件系统的内存。这些是在内存中创建的文件系统,以促进操作系统的高效运行。要查看存在哪些tmpfs文件系统,请使用df命令。
我们使用的选项有:
当您查看这些值时,首先想到的是它们比共享列中的数字大很多倍。这里显示的大小是这些文件系统的最大大小。实际上,它们各自只占用所需的内存。Shared列中的数字是内存使用率的可信数字。
这些文件系统包含什么?下面是一个快速分解:
缓冲区和缓存列仅在使用-w(宽)时出现。如果没有–w选项,这两列中的数字将合并到Buff/cache列中。
这两个记忆区域相互作用,相互依赖。缓存区保存(主要)从硬盘读取的数据。它会被保留,以防您需要再次访问它。从缓存中提取数据要比从硬盘中读取数据快得多。缓存还可以保存已修改但尚未写回硬盘的数据,或已计算但尚未保存到文件的值。
为了跟踪各种文件片段和数据存储,内核在缓冲区内存区域中构建了一个到缓存内存区域的索引。缓冲区是内存中保存磁盘块和其他信息结构的部分。它们包含有关高速缓存区域中保存的数据的数据。所以缓冲区是缓存的元数据。
当发出文件读取请求时,内核读取缓冲区数据结构中的数据,寻找已被请求的文件或文件片段。如果找到了,则从缓冲区数据结构指向的高速缓存区域为请求提供服务。如果它不在缓存中,因此不在缓冲区内存区域的元数据中,则从硬盘读取文件。
缓冲存储器区域中的结构是:
您可以理解为什么将用于缓冲区和缓存区的内存压缩到一个Buff/cache列是有意义的。它们就像是同一事物的两部分。如果没有缓冲存储器区域为其内容提供索引,则缓存存储器区域将是无用的。
可用列是空闲列加上缓冲区和缓存列(或Buff/Cache列)中可以立即放弃的部分的总和。可用列是估计值,而不是确切数字。这是一个明智的估计,也是一个准确的估计,但它不应该被视为精确到最后一个字节。
要更改中自由显示图形的单位,请使用以下选项之一。
例如,要使用人类可读的值,请使用-h选项:
free -hfree将为每个值使用最合适的单位。如您所见,有些值显示在MiB中,有些值显示在GiB中。
--total选项使free显示总计行,该行对Mem行和Swap行的total、Used和free列中的值求和。
free -h --totalc(count)选项告诉free运行一定次数,每一次之间暂停一秒钟。要自由运行两次,请使用以下命令:
free -h -c 2如果您想看到某个应用程序对您的内存使用的影响,那么连续自由运行是很有用的。这使您可以在启动、使用并关闭正在调查的应用程序时在终端窗口中自由运行。
-s(秒)选项确定每次空闲运行之间的暂停时间。要在每次更新之间连续自由运行并暂停3秒钟,请使用以下命令:
free -s 3按Ctrl+C停止进程并返回命令提示符。
要在每次更新之间以指定的暂停自由运行,但在一定数量的报告之后停止,请组合-s(秒)和-c(计数)选项。要在每次更新之间自由运行五次并暂停两秒,请使用以下命令:
free -s 2 -c 5出现五个更新后,进程自行终止,并返回到命令提示符。
这在当今已经没有什么用处了,但是如果您在32位计算机上运行Linux,它可能会被证明是有用的。它将内存使用与低内存和高内存分开。
在基于32位Linux的操作系统上,CPU最多可以寻址4GB的内存。内存分为低内存和高内存。内存不足直接映射到内核的地址空间部分。高内存没有直接的内核映射。高内存通常是896MB以上。
这意味着内核本身(包括它的活动模块)只能使用低内存。用户处理任何不是内核本身的东西都可能利用低内存和高内存。
在64位计算机上,不会显示高内存的值:
free -h -l简要回顾:
Linux用户拥有大量的开源软件。但有时需要专有软件。它可能类似于运行Microsoft Word—考虑到LibreOffice的质量,这有点不必要—也可能是一个专有的驱动程序。 ...
... 在您真正充分利用终端之前,您需要知道如何导航它。这就是为什么我们认为这些是最基本的Linux命令:如果你不能更改目录或者在一个你不记得如何使用的命令上获得帮助,那么再多的终端知识也帮不了你。 ...
...了。此外,Wine允许在Linux上进一步安装Windows游戏。了解如何在Linux上开始视频游戏直播! ...
...此,这几乎是获取定量数据的唯一方法,说明系统的性能如何——如果您的数字不足,这表明您可能希望升级一些PC组件。 ...
... 我们不希望您在不知道命令行如何工作的情况下就开始使用它。本质上,它是一种指示计算机执行任务的方法,但没有鼠标。 ...
...ee、vmstat和top。我们还将直接查看reading/proc/meminfo。 linux如何使用ram RAM是一种有限的资源,所有进程(如应用程序和守护进程)都需要它的一部分。只有这么多了。内核判断内存争用,并将定量分配的内存分配给所有饥饿的进...
...列表(不考虑年份),按文件大小的升序排列。 相关:如何在Linux上使用管道 格雷普:少了指挥权,多了一个盟友 grep是一个非常好的工具,您可以随时使用。它可以追溯到1974年,现在仍然很强大,因为我们需要它所做的,没...
...用。它的输出可能会让新手感到困惑,但我们将向您展示如何理解它。 自由命令 free命令在终端窗口中打印内存使用情况的快速摘要。它没有太多的选择和技巧,也不需要花太多的时间和精力去学习如何使用它。然而,要学会...