Linux命令free是系统管理员和开发者日常工作中不可或缺的工具,主要用于查看当前系统内存的使用情况,它能够以人类可读的格式展示物理内存、交换空间(Swap)以及内核缓冲区的实时数据,帮助用户快速判断内存负载、识别内存泄漏问题或优化系统性能,本文将详细介绍free命令的基本用法、核心参数、输出解析及实际应用场景。

基本用法与默认输出
在终端中直接输入free命令,系统会以默认格式显示内存信息,默认单位为KB,输出包含多行数据,其中关键信息集中在total(总量)、used(已用)、free(空闲)、shared(共享)、buff/cache(缓冲/缓存)和available(可用)等列。
total used free shared buff/cache available
Mem: 16280964 3245672 8564328 123456 4459964 12034567
Swap: 8388608 0 8388608
这里的Mem行表示物理内存,Swap行表示交换空间。available列是Linux内核从free、buff/cache中估算的可回收内存,比free列更能反映实际可用内存,建议重点关注。
核心参数详解
free命令支持多种参数,可灵活调整输出格式和内容,以下是常用参数的功能说明:
| 参数 | 功能描述 |
|---|---|
-h |
以人类可读格式显示(如KB、MB、GB) |
-m |
以MB为单位显示 |
-g |
以GB为单位显示 |
-s |
指定刷新间隔(秒),动态监控内存变化 |
-t |
显示内存总计行 |
-c |
指定刷新次数,与-s搭配使用 |
free -h -s 2命令会以人类可读格式每2秒刷新一次内存数据,适合实时监控内存使用趋势,而free -m则以MB为单位,方便脚本处理或精确对比。

输出字段解析
理解free命令的输出字段是分析内存状态的关键:
total:系统总内存量(物理内存或交换空间)。used:已使用的内存量,包含应用程序占用的内存和内核缓冲区。free:完全未被使用的内存量。shared:被多个进程共享的内存量(如tmpfs文件系统)。buff/cache:内核用于缓冲(buffer)和缓存(cache)的内存量。available:应用程序可用的内存估算值,计算公式为available = free + buff/cache - (used - shared)。
需注意,used列的值可能因内核版本不同而包含或排除buff/cache,而available列在较新内核(3.14+)中更准确,建议优先参考。
实际应用场景
快速检查内存负载
通过free -h可直观查看内存是否紧张,若available值持续低于10%总内存,且buff/cache占比过高,可能需要释放缓存或排查内存泄漏进程。
监控交换空间使用情况
Swap列显示交换空间使用量,若used值频繁增长,表明物理内存不足,系统频繁使用交换空间,可能导致性能下降,此时可通过free -s 1观察Swap使用趋势,必要时扩容内存或优化应用程序。

释放缓存
内核会自动使用空闲内存作为缓存,但有时需手动释放,执行echo 1 > /proc/sys/vm/drop_caches可清空页缓存(需root权限),释放后可通过free -h验证效果。
脚本自动化监控
在运维脚本中,结合free -m的输出和awk工具可提取关键数据,计算内存使用率:free -m | awk '/Mem/{printf "Usage: %.2f%%\n", $3/$2*100}',适合集成到监控系统中。
注意事项
- 单位选择:默认单位KB可能不直观,推荐使用
-h参数提高可读性。 - 数据动态性:内存数据实时变化,单次快照可能无法反映趋势,建议结合
-s参数动态观察。 - 内核版本差异:旧版内核可能不支持
available列,需参考free和buff/cache综合判断。
通过灵活运用free命令及其参数,用户可以高效掌握系统内存状态,为性能优化和故障排查提供有力支持,无论是日常运维还是深度调试,free都是Linux内存管理的得力助手。




















