你好,我是老成。
一天搞定一个 Linux 命令,今天搞定 free 命令。
视频版地址:https://www.bilibili.com/video/BV1VsgCzHEMW/
命令介绍
free
是 Linux 系统中用于实时监控内存使用情况的命令工具,可显示物理内存(RAM)、交换空间(Swap)及内核缓冲区的总量、已用量、空闲量等关键指标。其数据来源于 /proc/meminfo
文件,是系统性能调优和故障排查的基础命令。
作用
-
实时监控:查看物理内存与交换空间的分配状态(总量、已用、空闲)。 -
性能诊断:识别内存瓶颈(如内存不足、Swap 过度使用),避免系统卡顿或崩溃。 -
优化决策:根据缓存( 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)参数解析

字段 | 含义 | 关键说明 |
---|---|---|
total |
系统总物理内存量 | 系统实际安装的 RAM 大小。 |
used |
已使用的内存 | 包含应用程序占用的内存 + 部分缓存(buffers/cache )。 |
free |
完全空闲的内存 | 未被任何进程或缓存使用的内存(通常较小,因 Linux 会利用空闲内存作缓存)。 |
shared |
多进程共享的内存(如共享库、tmpfs) | 一般与 /dev/shm 或进程间通信相关。 |
buffers |
块设备缓冲区内存 | 缓存磁盘块元数据(如文件属性),加速写入操作。 |
cache |
文件内容缓存 | 缓存磁盘文件内容(如频繁读取的文件),加速后续访问。 |
available |
应用程序可用内存(核心指标) | ≈ free + 可回收的 buffers/cache ,反映系统可分配给新程序的内存。 |
实际使用
-
基础监控:
free -h # 可读性强(推荐日常使用)
free -m # 以 MB 为单位(适合精确监控)
-
周期性监控内存变化(如排查内存泄漏):
free -s 3 -c 5 # 每 3 秒刷新,共执行 5 次
-
显示内存总和(物理内存 + Swap):
free -th # 输出末尾添加总计行
total used free ...
Total: 20G 8.5G 11G
-
排查缓存影响:
若available
过低但buff/cache
高,可手动释放缓存(生产环境慎用):
sync; echo 1 > /proc/sys/vm/drop_caches # 释放缓存

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
核心区别?
答:
-
free,是「物理上未被占用」的内存,直接可用。如果 Free
很低,但Available
很高,说明系统在高效利用缓存,无需担心内存不足。 -
Available,是「逻辑上可用」的内存,包含 Free
+ 可回收的缓存/缓冲区(如磁盘缓存、页面缓存等)。当程序需要内存时,系统会优先使用Free
内存;不足时,自动释放缓存供程序使用。这是判断内存是否够用的关键指标。
7)如何判断内存是否不足?
答:
-
关注 Available
:如果Available
接近Total
,说明内存充足。 -
无需过度在意 **Free**
:Linux 会尽量利用内存做缓存,Free
低是正常现象。
END
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.qiuyl.com/linux_cmd/417
共有 0 条评论