Linux 内存告急?别慌!free 命令精准诊断内存问题

真成运维 2025-6-30 23 6/30

你好,我是老成。

一天搞定一个 Linux 命令,今天搞定 free 命令。

视频版地址:https://www.bilibili.com/video/BV1VsgCzHEMW/

命令介绍

free 是 Linux 系统中用于实时监控内存使用情况的命令工具,可显示物理内存(RAM)、交换空间(Swap)及内核缓冲区的总量、已用量、空闲量等关键指标。其数据来源于 /proc/meminfo 文件,是系统性能调优和故障排查的基础命令。

作用

  1. 实时监控:查看物理内存与交换空间的分配状态(总量、已用、空闲)。
  2. 性能诊断:识别内存瓶颈(如内存不足、Swap 过度使用),避免系统卡顿或崩溃。
  3. 优化决策:根据缓存(buff/cache)和可用内存(available)调整应用配置或扩容内存。

语法

free [选项]

1)常用选项

选项 说明
-h 自动转换单位(KB/MB/GB)
-m/-g 指定单位为 MB 或 GB
-t 增加 总计行(物理内存 + Swap 总和)
-s <秒数> 周期性刷新输出(如 -s 5 每 5 秒更新)
-c <次数> 结合 -s 指定刷新次数(如 -s 2 -c 3 执行 3 次)
-w 宽输出模式,完整显示所有列
-l 显示详细高低内存统计(仅某些内核支持)

2)参数解析

Linux 内存告急?别慌!free 命令精准诊断内存问题
字段 含义 关键说明
total 系统总物理内存量 系统实际安装的 RAM 大小。
used 已使用的内存 包含应用程序占用的内存 + 部分缓存(buffers/cache)。
free 完全空闲的内存 未被任何进程或缓存使用的内存(通常较小,因 Linux 会利用空闲内存作缓存)。
shared 多进程共享的内存(如共享库、tmpfs) 一般与 /dev/shm 或进程间通信相关。
buffers 块设备缓冲区内存 缓存磁盘块元数据(如文件属性),加速写入操作。
cache 文件内容缓存 缓存磁盘文件内容(如频繁读取的文件),加速后续访问。
available 应用程序可用内存(核心指标) free + 可回收的 buffers/cache,反映系统可分配给新程序的内存。

实际使用

  1. 基础监控
free -h  # 可读性强(推荐日常使用)
free -m   # 以 MB 为单位(适合精确监控)
  1. 周期性监控内存变化(如排查内存泄漏):
free -s 3 -c 5  # 每 3 秒刷新,共执行 5 次
  1. 显示内存总和(物理内存 + Swap):
free -th         # 输出末尾添加总计行 
              total    used    free    ...    
Total:         20G     8.5G    11G    
  1. 排查缓存影响
    available 过低但 buff/cache 高,可手动释放缓存(生产环境慎用):
sync; echo 1 > /proc/sys/vm/drop_caches  # 释放缓存 
Linux 内存告急?别慌!free 命令精准诊断内存问题

Q&A

1)free 命令 Swap 显示使用量为 0,是否正常?
答:正常。未启用 Swap 分区时显示 0。若需启用,使用 swapon 命令

2)available 远小于 free + buff/cache,为什么?
答:内核预留部分内存(如低水位线),避免内存压力时立即回收

3)物理内存充足,为何 Swap 使用量仍在增长?
答:可能内核策略(如 swappiness 参数值过高),可通过调整降低 Swap 使用倾向:

一般不会使用swap分区内存,性能不好

sysctl vm.swappiness=10  # 默认 60,值越低越少用 Swap

4)虚拟化环境中 total 显示为 0,如何解决?
答:资源报告异常,检查虚拟机配置(如内存分配),或改用容器专用命令(如 docker stats

5)buffers cached 有何区别?

答:

  • buffers:缓存磁盘块元数据(如文件属性)
  • cached:缓存文件内容,加速读写

6)free available 核心区别?

答:

  1. free,是「物理上未被占用」的内存,直接可用。如果 Free 很低,但 Available 很高,说明系统在高效利用缓存,无需担心内存不足
  2. Available,是「逻辑上可用」的内存,包含 Free + 可回收的缓存/缓冲区(如磁盘缓存、页面缓存等)。当程序需要内存时,系统会优先使用 Free 内存;不足时,自动释放缓存供程序使用。这是判断内存是否够用的关键指标

7)如何判断内存是否不足?

答:

  • 关注 Available:如果 Available 接近 Total,说明内存充足。
  • 无需过度在意 **Free**:Linux 会尽量利用内存做缓存,Free 低是正常现象。

END

这篇文章有用吗?

点击星号为它评分!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

- THE END -

真成运维

6月30日23:11

最后修改:2025年6月30日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论