free 命令 #
free
命令用于显示系统中可用和已用的物理内存和交换空间的总量。它提供了系统内存使用情况的快照,是诊断内存相关问题的基本工具。
语法 #
free [选项]
常用选项 #
选项 | 描述 |
---|---|
-b |
以字节为单位显示内存大小 |
-k |
以千字节为单位显示内存大小(默认) |
-m |
以兆字节为单位显示内存大小 |
-g |
以吉字节为单位显示内存大小 |
-h |
以人类可读的格式显示内存大小(自动选择单位) |
-t |
显示总计行 |
-s 秒数 |
每隔指定的秒数重复显示 |
-c 次数 |
与-s一起使用,指定重复显示的次数 |
--si |
使用1000而不是1024作为单位进制 |
-w |
使用宽输出格式(显示更多列) |
--help |
显示帮助信息 |
-V, --version |
显示版本信息 |
输出列说明 #
free
命令的输出包含以下列:
total
:总内存大小used
:已使用的内存大小free
:空闲内存大小shared
:多个进程共享的内存大小buff/cache
:用于缓冲区和缓存的内存大小available
:可用于启动新应用程序的内存大小(不需要交换)
常见用法 #
1. 显示基本内存信息 #
free
输出示例:
total used free shared buff/cache available
Mem: 8167872 3159032 873828 772312 4135012 3922152
Swap: 2097148 114688 1982460
2. 以人类可读的格式显示 #
free -h
输出示例:
total used free shared buff/cache available
Mem: 7.8Gi 3.0Gi 853Mi 754Mi 3.9Gi 3.7Gi
Swap: 2.0Gi 112Mi 1.9Gi
3. 以兆字节为单位显示 #
free -m
输出示例:
total used free shared buff/cache available
Mem: 7975 3085 853 754 4037 3829
Swap: 2047 112 1935
4. 显示总计行 #
free -t
输出示例:
total used free shared buff/cache available
Mem: 8167872 3159032 873828 772312 4135012 3922152
Swap: 2097148 114688 1982460
Total: 10265020 3273720 2856288
5. 每隔3秒显示一次,共显示5次 #
free -s 3 -c 5
6. 使用宽输出格式 #
free -w
输出示例:
total used free shared buffers cache available
Mem: 8167872 3159032 873828 772312 389108 3745904 3922152
Swap: 2097148 114688 1982460
实用示例 #
1. 监控内存使用变化 #
watch -n 1 free -h
这将每秒更新一次内存使用情况。
2. 查看内存使用百分比 #
free | grep Mem | awk '{print "Memory usage: " $3/$2*100 "%"}'
3. 清除缓存以释放内存 #
首先查看当前内存使用情况:
free -h
然后清除页面缓存:
sudo sh -c "sync; echo 1 > /proc/sys/vm/drop_caches"
再次查看内存使用情况:
free -h
4. 结合其他命令分析内存 #
free -m && vmstat && top -bn1 | head -20
这将显示内存使用情况、虚拟内存统计和系统进程信息。
理解Linux内存管理 #
在Linux系统中,“空闲"内存的概念可能会引起误解。Linux会尽可能地使用可用内存作为磁盘缓存,以提高系统性能。因此,free
命令中的available
列比free
列更能准确反映实际可用的内存量。
缓冲区与缓存的区别 #
- 缓冲区(buffers):用于存储即将写入磁盘的数据
- 缓存(cache):用于存储从磁盘读取的数据,以便快速访问
这两种内存都可以在需要时被回收,用于运行应用程序。
与其他内存监控工具的比较 #
工具 | 优点 | 缺点 |
---|---|---|
free | 简单、快速、几乎所有系统都可用 | 只提供静态快照,信息有限 |
top/htop | 交互式,提供更多详细信息 | 需要更多资源,信息可能过多 |
vmstat | 提供内存和其他系统资源的统计信息 | 输出格式不太直观 |
/proc/meminfo | 提供最详细的内存信息 | 需要手动解析,不易读 |
提示 #
- 在现代Linux系统中,
available
列比free
列更重要,它表示可用于新应用程序的内存量 - 高缓存使用量通常是好事,表示系统正在有效利用内存提高性能
- 如果
available
内存很低且swap used
持续增加,可能表示系统内存不足 - 使用
-h
选项可以使输出更易读 - 定期监控内存使用趋势比单次查看更有价值
- 在服务器环境中,结合
free
、vmstat
和sar
等工具可以获得更全面的内存使用情况