Linux free 命令:监控系统内存

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/SystemInformationandMonitoringGroup -.-> linux/free("Memory Reporting") subgraph Lab Skills linux/free -.-> lab-388496{{"Linux free 命令:监控系统内存"}} end

free 命令的基本用法

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

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

free

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

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

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

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

输出分为两行:

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

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

以人类可读格式显示内存信息

虽然 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",汇总内存和交换空间的使用情况。这可以让你快速了解系统的总内存情况,包括物理 RAM 和交换空间。

在此输出中:

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

当你希望快速了解系统的整体内存容量和使用情况时,这种总览视图特别有用。

总结

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

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

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

以下是一些本实验未涵盖的 free 命令选项:

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

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