为什么 free -h 的输出与 free --giga 不同?

ng.*_*bie 0 swap disk-usage disk free

我正面临一个非常奇怪的问题。

在我的 Fedora PC 上,我有 12 GB 的交换文件。

但是当我发出free -h我得到:

              total        used        free      shared  buff/cache   available
Mem:          7.7Gi       1.8Gi       3.7Gi       409Mi       2.2Gi       5.2Gi
Swap:          11Gi          0B        11Gi
Run Code Online (Sandbox Code Playgroud)

如您所见,我的交换显示为 11 GB,而实际上我有 12 GB。

这在我使用时得到纠正 free --giga

              total        used        free      shared  buff/cache   available
Mem:              8           1           3           0           2           5
Swap:            12           0          12
Run Code Online (Sandbox Code Playgroud)

在这里我得到了正确的输出。

为什么我使用 -h vs 时有区别--giga

这里发生了什么 ?

Ste*_*itt 7

这两个命令使用不同的单位:-h以 1024 的幂显示值(注意“Gi”后缀,表示gibibytes),--giga以 1000 的幂显示值。

在您的情况下,12GB(千兆字节)是 12,000,000,000 字节,等于 11.2GiB(四舍五入到最接近的 0.1),free向下舍入为 11。

您可以强制free -h--si标志使用 10 的幂:

free -h --si
Run Code Online (Sandbox Code Playgroud)

units 可以为您执行此类转换:

$ units 12GB GiB
    * 11.175871
    / 0.089478485
Run Code Online (Sandbox Code Playgroud)