free命令基础用法
free命令是linux系统中用于查看内存和交换空间使用情况的工具,默认情况下直接执行free命令就可以输出当前系统的内存状态,输出内容包含物理内存、交换分区、缓冲区和缓存的相关数据。

执行默认的free命令后,会输出如下格式的内容:
free
total used free shared buff/cache available
Mem: 2048000 512000 256000 32000 1280000 1500000
Swap: 1024000 0 1024000
free命令常用参数
free命令支持多个参数来调整输出格式和内容,常用的参数如下:
- -h:以人类可读的格式输出,自动转换单位为K、M、G,方便查看
- -b:以字节为单位输出内存大小
- -k:以KB为单位输出内存大小,是默认单位
- -m:以MB为单位输出内存大小
- -g:以GB为单位输出内存大小
- -s N:每隔N秒持续输出内存状态,适合监控内存变化
- -t:在输出末尾显示内存和交换分区的总和
- -V:查看free命令的版本信息
参数使用示例
以人类可读格式查看内存状态,执行以下命令:
free -h
total used free shared buff/cache available
Mem: 2.0G 500M 250M 31M 1.2G 1.5G
Swap: 1.0G 0B 1.0G
每隔2秒持续输出内存状态,执行以下命令:
free -s 2
total used free shared buff/cache available
Mem: 2048000 512000 256000 32000 1280000 1500000
Swap: 1024000 0 1024000
total used free shared buff/cache available
Mem: 2048000 513000 255000 32000 1280000 1499000
Swap: 1024000 0 1024000
输出字段含义详解
free命令的输出包含多个字段,理解每个字段的含义才能准确判断内存使用情况:
| 字段名 | 含义说明 |
|---|---|
| total | 系统总的内存大小,包含物理内存或交换分区的总容量 |
| used | 已经被使用的内存大小,计算方式为total减去free和buff/cache |
| free | 完全未被使用的内存大小 |
| shared | 被共享内存使用的内存大小,通常是tmpfs等共享内存机制占用的空间 |
| buff/cache | 缓冲区和缓存占用的内存大小,这部分内存可以被释放供应用程序使用 |
| available | 估算的可用内存大小,是free加上可以释放的buff/cache部分,比free更能反映实际可用内存 |
| Swap | 交换分区的相关数据,total是交换分区总大小,used是已使用的交换空间,free是未使用的交换空间 |
buff和cache的区别
buff是缓冲区,主要用于存储磁盘等块设备的读写临时数据,比如写文件时的临时缓冲;cache是缓存,主要用于存储从磁盘读取的文件内容、程序指令等,加快后续访问速度。两者都是为了提高系统IO性能设计的,当系统内存不足时,这部分内存可以被内核回收分配给应用程序使用。
实际场景使用技巧
判断内存是否充足
判断系统内存是否充足不要只看free字段,因为linux系统会尽可能使用内存做缓存提升性能,应该重点看available字段。如果available字段的值持续很低,说明系统内存不足,需要考虑扩容或者排查内存泄漏问题。
排查内存泄漏
可以使用free -s 5命令每隔5秒输出一次内存状态,观察used和available的变化。如果available持续下降,used持续上升,且buff/cache没有明显波动,就可能存在应用程序内存泄漏的问题,需要结合top、ps等命令定位具体的进程。
清理缓存释放内存
如果临时需要释放buff/cache占用的内存,可以执行以下命令,注意该操作需要root权限,且清理缓存可能会导致后续IO性能下降:
# 清理页缓存、目录项缓存、inode缓存 echo 3 > /proc/sys/vm/drop_caches
清理后再次执行free命令,可以看到buff/cache字段的数值明显下降,free字段的数值上升。
注意事项
- free命令的输出是瞬时状态,不能代表长期的趋势,排查问题需要结合多次采样的数值
- 交换分区的used数值升高说明系统内存不足,开始使用磁盘交换空间,会严重影响系统性能,需要重点关注
- 不同版本的free命令输出格式可能略有差异,部分老版本可能没有available字段,此时可以通过free加上buff/cache的数值估算可用内存
free命令linux内存查看linux系统监控buffer_cache修改时间:2026-06-28 07:33:30