这是一个非常常见的疑问,因为 free 命令的输出格式在不同系统和版本中略有不同。

在绝大多数现代 Linux 发行版(如 Ubuntu 18.04+, CentOS 7+, Debian 10+ 等)中,free 命令的默认输出单位是 KiB (Kibibytes)。
- KiB (Kibibyte) = 1024 字节
- 这与 KB (Kilobyte) 在概念上不同,后者在某些语境下指 1000 字节,但在内存管理领域,1024 是标准。
默认输出示例
让我们先看一个典型的 free 命令输出:
$ free
total used free shared buff/cache available
Mem: 16256764 3285356 8642872 123456 4338536 12010308
Swap: 2097148 0 2097148
在这个例子中:
total,used,free等列的数值都是以 KiB 为单位的。- 总内存是
16256764KiB。 - 你可以手动换算成更易读的单位:
- MiB (Mebibyte):
16256764 / 1024 ≈ 15872 MiB - GiB (Gibibyte):
15872 / 1024 ≈ 15.50 GiB
- MiB (Mebibyte):
如何查看和使用不同单位
free 命令提供了强大的 -h (human-readable) 选项,这是最推荐的使用方式,因为它会自动选择最合适的单位(K, M, G, T)来显示,使结果一目了然。

使用 -h 选项(推荐)
$ free -h
total used free shared buff/cache available
Mem: 15.9Gi 3.21Gi 8.45Gi 121Mi 4.24Gi 11.7Gi
Swap: 2.0Gi 0B 2.0Gi
解释:
-h选项让free自动将数值转换为最合适的可读单位。Gi代表 Gibibytes (1 GiB = 1024 MiB)。Mi代表 Mebibytes (1 MiB = 1024 KiB)。B代表 Bytes。available列:这是比free列更准确的可用内存估算值,因为它包括了可以快速回收的缓存和缓冲区内存,在评估系统剩余内存时,应该关注available列而不是free列。
其他单位选项
free 命令也支持指定特定的单位后缀:
-b: 以 Bytes (字节) 为单位显示。-k: 以 KiB (Kibibytes) 为单位显示 (这是默认行为)。-m: 以 MiB (Mebibytes) 为单位显示。-g: 以 GiB (Gibibytes) 为单位显示。-t: 在末尾显示一个总计行。-s <秒数>: 持续监控,每隔指定秒数刷新一次。
示例:
# 以 MiB 为单位显示
$ free -m
total used free shared buff/cache available
Mem: 15872 3209 8442 120 4222 11725
Swap: 2048 0 2048
# 以 GiB 为单位显示
$ free -g
total used free shared buff/cache available
Mem: 15 3 8 0 4 11
Swap: 2 0 2
不同 free 版本的差异(重要)
在非常旧的 Linux 系统上(CentOS 6 或更早版本),free 命令的默认单位是 KB,而不是 KiB。

旧版 free 示例 (单位为 KB):
# 在旧版系统上,默认输出可能是这样
$ free
total used free shared buffers cached
Mem: 16667684 3368124 12258892 126120 208284 2513448
-/+ buffers/cache: 646392 16021292
Swap: 2146304 0 2146304
在这个旧版输出中:
total是16667684KB。- 换算成 GiB:
16667684 / 1024 / 1024 ≈ 15.88 GiB。
如何判断你的系统是哪种?
最简单的方法就是运行 free -h,如果你的系统很旧,它可能不支持 -h 选项,此时你可以运行 free -m,如果结果看起来像是用 KiB 除以 1024 得到的,那么它默认就是 KiB,如果结果看起来像是用 KB 除以 1024 得到的,那么它默认就是 KB。
总结与最佳实践
| 选项 | 单位 | 描述 |
|---|---|---|
| (无选项) | KiB | 现代 Linux 的默认单位,1 KiB = 1024 B。 |
-b |
Bytes | 字节,最基础的单位。 |
-k |
KiB | 与默认行为相同。 |
-m |
MiB | Mebibytes,1 MiB = 1024 KiB。 |
-g |
GiB | Gibibytes, 1 GiB = 1024 MiB。 |
-h |
自动 | 强烈推荐,自动选择 K, M, G, T 等单位,最易读。 |
建议:
在日常使用和脚本中,始终使用 free -h,它提供了最清晰、最易于理解的内存使用情况,并且能自动适应不同大小的内存配置,如果你需要脚本进行精确计算,请根据你的系统环境选择 -k (现代系统) 或 -m/-b 来确保单位的一致性。
