Linux free 命令:监控系统内存

LinuxBeginner
立即练习

介绍

欢迎来到 Linux free 命令实验。在本实验中,你将学习如何使用 free 命令来监控和分析系统内存的使用情况。对于需要优化系统性能和排查内存相关问题的系统管理员及开发人员来说,这项技能至关重要。

假设你是一名初级系统管理员,负责监控一台繁忙 Web 服务器的内存使用情况。free 命令将是你完成此任务的首选工具,它能让你快速评估当前的内存状态,并在问题影响系统性能之前识别出潜在隐患。

这是一个引导实验,提供了逐步指导来帮助你学习和实践。请仔细遵循说明完成每个步骤并获得动手经验。历史数据表明,这是一个初学者级别的实验,完成率为 99%。它在学习者中获得了 100% 的好评率。

free 命令的基本用法

让我们从最简单的形式开始使用 free 命令。这将为我们提供系统内存使用情况的概览。

首先,如果尚未打开终端,请打开一个终端。然后运行以下命令:

free

你应该会看到类似如下的输出:

              total        used        free      shared  buff/cache   available
Mem:        8167004     2524956     3300280      658636     2341768     4657560
Swap:       2097152           0     2097152

此输出提供了系统内存使用情况的快照。让我们来分析每一列的含义:

  • total:物理内存(RAM)和交换空间(swap)的总量。
  • used:当前正在使用的内存量。
  • free:完全未被使用的内存量。
  • shared:被临时文件系统(tmpfs)使用的内存量。
  • buff/cache:用于内核缓冲区和缓存的内存量。
  • available:估计可用于启动新应用程序的内存量。

输出分为两行:

  • Mem:显示有关物理内存的信息。
  • Swap:显示有关交换空间(虚拟内存)的信息。

默认情况下,所有数值均以字节(bytes)为单位显示。

以易读格式显示内存信息

虽然 free 的默认输出很精确,但快速阅读起来可能比较困难。我们可以使用 -h 选项以更符合人类阅读习惯的格式显示信息。

运行以下命令:

free -h

你现在应该看到类似如下的输出:

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi

-h 选项(代表「human-readable」,即易读格式)会自动缩放数字并添加适当的单位后缀(G 代表吉字节,M 代表兆字节等)。这使得一眼就能快速了解系统的内存使用情况变得更加容易。

请注意,现在的数值带有 Gi(二进制吉字节)和 Mi(二进制兆字节)等单位。这些是二进制单位,其中 1 Gi = 1024 Mi,这是计算机衡量内存的标准方式。

以兆字节为单位显示内存信息

有时,你可能希望以特定单位查看内存信息。我们可以使用 -m 选项以兆字节为单位显示信息。

运行以下命令:

free -m

你的输出应该如下所示:

              total        used        free      shared  buff/cache   available
Mem:           7975        2466        3222         642        2286        4548
Swap:          2047           0        2047

-m 选项强制 free 以兆字节为单位显示所有数值。当你需要比 -h 选项更高的精度,但仍希望数字易于阅读时,这非常有用。

请注意,这些是二进制兆字节(MiB),其中 1 MiB = 1,048,576 字节,而不是十进制兆字节(MB,1 MB = 1,000,000 字节)。在实际操作中,两者的差别很小,通常可以互换使用。

使用 free 命令进行持续监控

在实际场景中,你经常需要观察内存随时间的变化情况。free 命令允许你通过 -s(秒)选项来实现这一点,该选项会定期更新显示内容。

让我们每隔 3 秒监控一次内存使用情况,共更新 5 次:

free -h -s 3 -c 5

此命令使用了多个选项:

  • -h:以易读格式显示。
  • -s 3:每 3 秒更新一次。
  • -c 5:在更新 5 次后停止。

你应该会看到每 3 秒更新一次的输出,类似于:

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi

...

这种持续监控可以帮助你观察内存使用量随时间的变化,这在尝试识别内存泄漏或了解特定应用程序的内存使用模式时特别有用。

如果你想在完成 5 次更新之前停止命令,请按 Ctrl+C。

显示总内存使用量

默认情况下,free 命令会将缓冲区(buffers)和缓存(cache)分开显示。然而,有时你可能希望看到包含缓冲区和缓存在内的总内存使用情况。为此,我们可以使用 -t 选项。

运行以下命令:

free -h -t

你的输出应该如下所示:

              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.4Gi       3.1Gi       642Mi       2.2Gi       4.4Gi
Swap:         2.0Gi          0B       2.0Gi
Total:        9.8Gi       2.4Gi       5.1Gi

-t 选项在底部添加了一个「Total」行,汇总了内存和交换空间的使用情况。这可以让你快速了解系统的总内存容量,包括物理内存和交换空间。

在此输出中:

  • Mem: 行显示物理内存使用情况。
  • Swap: 行显示交换空间使用情况。
  • Total: 行显示物理内存和交换空间的总和。

当你想要一眼看清系统的整体内存容量和负载时,这个汇总视图非常有用。

总结

恭喜你!你已经完成了关于使用 free 命令监控系统内存的实验。让我们回顾一下你学到的内容:

  1. free 命令的基本用法,用于显示内存信息。
  2. 使用 -h 选项以易读格式显示内存。
  3. 使用 -m 选项以兆字节为单位显示内存信息。
  4. 使用 -s-c 选项持续监控内存使用情况。
  5. 使用 -t 选项显示包含交换空间在内的总内存使用量。

这些技能对于监控和管理系统资源非常宝贵,尤其是在需要优化性能或排查内存相关问题的场景中。

以下是本实验中未涉及的一些其他 free 命令选项:

  • -b:以字节为单位显示内存量。
  • -k:以千字节为单位显示内存量。
  • -g:以吉字节为单位显示内存量。
  • -w:使用宽输出格式。
  • -s:每隔 [SEC] 秒更新一次显示。
  • --si:使用 1000 的幂而不是 1024。

请记住,有效的内存管理对于维持系统性能和稳定性至关重要。定期使用 free 命令进行监控可以帮助你在内存问题影响系统性能之前及时发现并预防。