如何在linux上使用free命令

Linux free命令显示您的计算机有多少内存正在使用,还有多少内存可供程序使用。它的输出可能会让新手感到困惑,但我们将向您展示如何理解它。...

Linux free命令显示您的计算机有多少内存正在使用,还有多少内存可供程序使用。它的输出可能会让新手感到困惑,但我们将向您展示如何理解它。

自由命令

free命令在终端窗口中打印内存使用情况的快速摘要。它没有太多的选择和技巧,也不需要花太多的时间和精力去学习如何使用它。然而,要学会正确解释它所提供的信息就另当别论了。很容易被自由告诉你的东西弄糊涂。

这部分是由于术语“free”和“available”之间的区别,部分是由于Linux内核的内存和文件系统管理例程的内部工作方式。如果您有空闲内存,内核可以很好地利用它,它将借用它用于自己的目的。直到你需要它回来。

我们将深入研究底层机制和数据例程,以便您能够了解引擎盖下发生了什么,以及所有这些如何影响随机存取存储器(RAM)的使用。

自由列

让我们毫无选择地自由开火,看看能得到什么:

free

如何在linux上使用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。

顶行报告系统内存,底行报告交换空间。我们将在这里介绍这些列,稍后将更详细地介绍它们。内存行的列如下所示:

  • 总计:计算机中安装的物理RAM总量。
  • 已使用:这是由Total-(Free+Buffers+Cache)计算的。
  • 空闲:未使用的内存量。为什么Total=已用+免费?我们很快会解释的。
  • 共享:tmpfs文件系统使用的内存。
  • Buff/cache:用于缓冲和缓存的内存。
  • 可用:这是对可用于处理来自应用程序、计算机内任何其他功能软件(如图形桌面环境和Linux命令)的内存请求的内存的估计。

对于交换行,列为:

  • 总计:交换分区或交换文件的大小。
  • 已用:正在使用的交换空间量。
  • 空闲:剩余的(未使用的)交换空间

大屏幕

要将Buff/cache图形分隔为各自的列,请使用-w(宽)选项:

free -w

如何在linux上使用free命令

这就是结果。我们得到的不是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

如何在linux上使用free命令

输出是名称和值的单个列表。

如何在linux上使用free命令

使用的列

这就是它开始变得有趣的地方。

所用的数字代表你可能期望的,加上一堆其他的东西。这是分配给进程的内存,由用户程序使用,并由GNOME或KDE桌面环境等使用。没什么奇怪的。但它也包括缓冲区和缓存数据。

没有被用来做某事的内存是浪费的内存。内核使用空闲的RAM来保存高速缓存和缓冲区,使其能够更高效地运行。所以这个RAM被内核用来做一些事情,而不是被用户空间中的任何东西使用。

如果接收到的内存请求只能通过放弃内核为自己的设备使用的一些RAM来提供服务,那么这就是发生的,无缝的。释放这个RAM并将其用于其他应用程序不会影响Linux系统的正确操作不会有任何问题,但它可能会影响系统的性能。

所以这个专栏真正的意思是“被某物使用的所有RAM,即使它可以立即被回收。”

自由柱

此列包含未被任何对象使用的RAM数量的数字。因为Used列包含缓冲区和缓存数据,所以对于功能完善的Linux系统来说,很少有RAM被列为“free”

这不一定是一件坏事,而且几乎可以肯定的是,这意味着您拥有一个功能完美的系统,可以正确地调节RAM的使用。也就是说,RAM正被应用程序和其他用户空间进程以及内核用来尽可能提高计算机的性能。

共享列

Shared列中的数字表示用于保存基于tmpfsram的文件系统的内存。这些是在内存中创建的文件系统,以促进操作系统的高效运行。要查看存在哪些tmpfs文件系统,请使用df命令。

我们使用的选项有:

  • -h(人类):使用合理的、最合适的单位。
  • --总计:在输出的底部显示一行总计。
  • --type=tmpfs:仅报告tmpfs文件系统。
df -h --total --type=tmpfs

如何在linux上使用free命令

当您查看这些值时,首先想到的是它们比共享列中的数字大很多倍。这里显示的大小是这些文件系统的最大大小。实际上,它们各自只占用所需的内存。Shared列中的数字是内存使用率的可信数字。

这些文件系统包含什么?下面是一个快速分解:

  • /run:它保存许多临时文件,如PID文件、在重新启动时不必保留的systemd日志、与Unix域套接字、fifo和守护进程管理有关的信息。
  • /dev/shm:这允许在Debian和Debian派生的Linux发行版上实现与POSIX兼容的内存管理。
  • /run/lock:它保存锁文件。它们用作指示符号,让系统知道文件或其他共享资源正在使用中。它们包含使用该资源的进程的PID。
  • /sys/fs/cgroup:这是管理控制组的方案的中心元素。进程根据其使用的资源类型被组织成层次组。它允许被监视和限制的进程对资源的使用。
  • /run/user/121:这是pam\u systemd创建的一个文件夹,用于存储用户的临时文件。在这种情况下,用户的ID为121。请注意,“用户”可能是普通用户、守护进程或其他进程。
  • /run/user/1000:这是pam\u systemd创建的一个文件夹,用于存储该用户的临时文件,该用户的用户ID为1000。这是当前用户,用户dave。

缓冲区和缓存列

缓冲区和缓存列仅在使用-w(宽)时出现。如果没有–w选项,这两列中的数字将合并到Buff/cache列中。

这两个记忆区域相互作用,相互依赖。缓存区保存(主要)从硬盘读取的数据。它会被保留,以防您需要再次访问它。从缓存中提取数据要比从硬盘中读取数据快得多。缓存还可以保存已修改但尚未写回硬盘的数据,或已计算但尚未保存到文件的值。

为了跟踪各种文件片段和数据存储,内核在缓冲区内存区域中构建了一个到缓存内存区域的索引。缓冲区是内存中保存磁盘块和其他信息结构的部分。它们包含有关高速缓存区域中保存的数据的数据。所以缓冲区是缓存的元数据。

当发出文件读取请求时,内核读取缓冲区数据结构中的数据,寻找已被请求的文件或文件片段。如果找到了,则从缓冲区数据结构指向的高速缓存区域为请求提供服务。如果它不在缓存中,因此不在缓冲区内存区域的元数据中,则从硬盘读取文件。

缓冲存储器区域中的结构是:

  • 缓冲头:每个缓冲区都用一个称为缓冲头的数据块来描述。此外,如果块中的数据被更改,并且相关的内存页被“弄脏”,描述符将跟踪将数据写回硬盘驱动器的需要。
  • inode:inode保存关于文件和目录的元数据,包括它们在硬盘驱动器(或虚拟文件系统)上的位置、文件大小和文件的时间戳。
  • dentry:dentry(目录条目)是保存目录列表信息的结构。可以将其视为目录中文件和目录的inode列表。

您可以理解为什么将用于缓冲区和缓存区的内存压缩到一个Buff/cache列是有意义的。它们就像是同一事物的两部分。如果没有缓冲存储器区域为其内容提供索引,则缓存存储器区域将是无用的。

可用列

可用列是空闲列加上缓冲区和缓存列(或Buff/Cache列)中可以立即放弃的部分的总和。可用列是估计值,而不是确切数字。这是一个明智的估计,也是一个准确的估计,但它不应该被视为精确到最后一个字节。

更改显示单位

要更改中自由显示图形的单位,请使用以下选项之一。

  • -b:以字节为单位显示值。
  • -k:以kibibytes为单位显示值(这是默认值)。
  • -m:以兆字节为单位显示值。
  • -g:以GiB为单位显示值。
  • -h:以合理的最佳拟合单位(人类可读)显示值。

例如,要使用人类可读的值,请使用-h选项:

free -h

如何在linux上使用free命令

free将为每个值使用最合适的单位。如您所见,有些值显示在MiB中,有些值显示在GiB中。

显示总计

--total选项使free显示总计行,该行对Mem行和Swap行的total、Used和free列中的值求和。

free -h --total

如何在linux上使用free命令

计数选项

c(count)选项告诉free运行一定次数,每一次之间暂停一秒钟。要自由运行两次,请使用以下命令:

free -h -c 2

如何在linux上使用free命令

连续自由奔跑

如果您想看到某个应用程序对您的内存使用的影响,那么连续自由运行是很有用的。这使您可以在启动、使用并关闭正在调查的应用程序时在终端窗口中自由运行。

-s(秒)选项确定每次空闲运行之间的暂停时间。要在每次更新之间连续自由运行并暂停3秒钟,请使用以下命令:

free -s 3

如何在linux上使用free命令

按Ctrl+C停止进程并返回命令提示符。

组合计数和秒选项

要在每次更新之间以指定的暂停自由运行,但在一定数量的报告之后停止,请组合-s(秒)和-c(计数)选项。要在每次更新之间自由运行五次并暂停两秒,请使用以下命令:

free -s 2 -c 5

如何在linux上使用free命令

出现五个更新后,进程自行终止,并返回到命令提示符。

如何在linux上使用free命令

分离低内存和高内存

这在当今已经没有什么用处了,但是如果您在32位计算机上运行Linux,它可能会被证明是有用的。它将内存使用与低内存和高内存分开。

在基于32位Linux的操作系统上,CPU最多可以寻址4GB的内存。内存分为低内存和高内存。内存不足直接映射到内核的地址空间部分。高内存没有直接的内核映射。高内存通常是896MB以上。

这意味着内核本身(包括它的活动模块)只能使用低内存。用户处理任何不是内核本身的东西都可能利用低内存和高内存。

在64位计算机上,不会显示高内存的值:

free -h -l

如何在linux上使用free命令

记忆就是这样形成的

简要回顾:

  • 总计:系统中安装的RAM数量。
  • 已用:等于总计-(空闲+缓冲区+缓存)。
  • 空闲:任何东西完全不用的内存量。
  • 共享:tmpfs文件系统占用的内存。
  • 缓冲区:为缓存中存储的所有内容提供索引而维护的数据结构。
  • 缓存:从硬盘读取的数据、等待写回硬盘的修改数据和其他计算值。
  • 可用:真正免费的。对空闲、缓冲和高速缓存中可用于满足内存请求的内存的估计。

 

  • 发表于 2021-04-02 19:12
  • 阅读 ( 175 )
  • 分类:互联网

你可能感兴趣的文章

如何在ubuntu、fedora和mint中安装专有的图形驱动程序

Linux用户拥有大量的开源软件。但有时需要专有软件。它可能类似于运行Microsoft Word—考虑到LibreOffice的质量,这有点不必要—也可能是一个专有的驱动程序。 ...

  • 发布于 2021-03-14 23:36
  • 阅读 ( 209 )

40多个最常用的linux终端命令

... 在您真正充分利用终端之前,您需要知道如何导航它。这就是为什么我们认为这些是最基本的Linux命令:如果你不能更改目录或者在一个你不记得如何使用的命令上获得帮助,那么再多的终端知识也帮不了你。 ...

  • 发布于 2021-03-15 21:40
  • 阅读 ( 252 )

linux视频游戏直播入门

...了。此外,Wine允许在Linux上进一步安装Windows游戏。了解如何在Linux上开始视频游戏直播! ...

  • 发布于 2021-03-16 01:05
  • 阅读 ( 197 )

如何测试linux pc的性能

...此,这几乎是获取定量数据的唯一方法,说明系统的性能如何——如果您的数字不足,这表明您可能希望升级一些PC组件。 ...

  • 发布于 2021-03-17 09:58
  • 阅读 ( 203 )

raspberry pi终端命令:raspberry pi用户快速指南

... 我们不希望您在不知道命令行如何工作的情况下就开始使用它。本质上,它是一种指示计算机执行任务的方法,但没有鼠标。 ...

  • 发布于 2021-03-18 12:27
  • 阅读 ( 514 )

linux正在吃掉你的公羊吗?如何管理你的记忆

...的内存。为了理解到底发生了什么,我们必须看看Linux是如何管理内存的。 ...

  • 发布于 2021-03-23 08:31
  • 阅读 ( 309 )

如何在linux上使用pandora

... 如何在ubuntu上安装pithos ...

  • 发布于 2021-03-25 05:06
  • 阅读 ( 220 )

如何从linux终端检查内存使用情况

...ee、vmstat和top。我们还将直接查看reading/proc/meminfo。 linux如何使用ram RAM是一种有限的资源,所有进程(如应用程序和守护进程)都需要它的一部分。只有这么多了。内核判断内存争用,并将定量分配的内存分配给所有饥饿的进...

  • 发布于 2021-04-02 13:03
  • 阅读 ( 207 )

如何在linux上使用grep命令

...列表(不考虑年份),按文件大小的升序排列。 相关:如何在Linux上使用管道 格雷普:少了指挥权,多了一个盟友 grep是一个非常好的工具,您可以随时使用。它可以追溯到1974年,现在仍然很强大,因为我们需要它所做的,没...

  • 发布于 2021-04-02 17:23
  • 阅读 ( 164 )

如何在linux上使用free命令

...用。它的输出可能会让新手感到困惑,但我们将向您展示如何理解它。 自由命令 free命令在终端窗口中打印内存使用情况的快速摘要。它没有太多的选择和技巧,也不需要花太多的时间和精力去学习如何使用它。然而,要学会...

  • 发布于 2021-04-02 19:12
  • 阅读 ( 175 )
sns5039398
sns5039398

0 篇文章

相关推荐