free 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
free——磁盘与存储命令族(见磁盘与存储命令族),确切说是内存查看命令。它回答"内存够不够"。
free 一行报告系统的物理内存(RAM)和交换分区(swap)使用情况。它比 top 顶部的内存行更直接,专看内存大盘。
一、基本用法
free -h # -h 人类可读(G/M)
free -h -s 2 # 每 2 秒刷新
free -m # 以 MB 为单位
-h必加,自动选 G/M/K。第一行是"自启动累计"无意义,加-s 2持续看变化才有用。
二、各列含义(关键在 available)
total used free shared buff/cache available
Mem: 15Gi 4.1Gi 8.2Gi 200Mi 3.6Gi 10.8Gi
Swap: 2.0Gi 0B 2.0Gi| 列 | 含义 |
|---|---|
total | 总物理内存 |
used | 已用(total - free - buff/cache) |
free | 完全未被使用的内存 |
buff/cache | 内核用于缓冲(buffers)和页缓存(cache)的内存 |
available | 估算的、应用程序真正还能用的内存 |
Swap | 交换分区用量(used 非 0 说明在换页) |
最大的误区:看到
free很小就以为内存不够。其实 Linux 会主动用空闲内存做buff/cache(缓存磁盘数据、加速读写),这部分需要时可以被回收给应用。所以判断"内存够不够"看available,不是free。available近似等于free + 可回收的 cache,是应用能申请到的真实上限。
三、Swap 是内存压力的晴雨表
free -h
# Swap 的 used 在涨 → 物理内存真不够,系统开始换页,性能会明显下降
Swap used持续增长是内存不足的确凿信号——系统被迫把内存页换到磁盘(比 RAM 慢几个数量级)。偶尔一点 swap 正常(内核会把不常用的页换出),但持续上涨就要警惕:要么加内存,要么查谁在吃内存(top 按 M / ps)。这点和 vmstat 的 si/so 互相印证。
四、实战:内存告警怎么看
free -h
# available 很低(如 < 5% total)→ 真紧张,查吃内存的进程
top -o %MEM # 按内存排序找元凶
# 或
ps -eo pid,comm,%mem,rss --sort=-rss | head若 available 还充裕但 free 小,那是正常的 cache 占用,无需处理(内核会释放)。只有 available 见底 + swap 在涨,才需要行动。别被 free 那一列吓到——这是新手最常犯的误判。
五、free vs top 内存行
| 工具 | 视角 |
|---|---|
free -h | 内存大盘,重点看 available 和 swap |
| top 顶部 Mem/Swap | 同上,但嵌在进程列表顶部(见 top) |
两者内存信息一致,
free更聚焦、更干净。排内存问题:free -h看是不是真紧张 →top -o %MEM找进程。需要释放 cache 可echo 3 > /proc/sys/vm/drop_caches(仅调试,正常不必)。
一句话总结
free -h = 内存大盘,关键看 available(真实可用,含可回收 cache)而非 free(Linux 用空闲内存做 buff/cache 加速,可回收);Swap used 持续上涨才是内存真不够的晴雨表。内存告警先看 available 再 top -o %MEM 找元凶,别被 free 小吓到。