我正在 CentOS 6 服务器上监视我的 RAM,当我free -h
看到 15G 可用时,这还可以,但当我free -b
看到 1641154969 字节,等于 1,641154969G 时。
free -h
total used free shared buffers cached
Mem: 15G 3.0G 12G 1.7M 39M 671M
-/+ buffers/cache: 2.3G 12G
Swap: 7.7G 0B 7.7G
free -b
total used free shared buffers cached
Mem: 1641154969 3238035456 1317351424 1781760 41451520 704331776
-/+ buffers/cache: 2492252160 1391929753
Swap: 8279552000 0 8279552000
答案1
旧版本的free
,例如 CentOS 6 中使用的版本,每个值最多仅显示十位数字。显示的“1641154969”缺少最后一位数字。这是固定的按版本 3.3.10;free
现在最多显示十一位数字,这足以显示一位艾比字节的记忆。 (我没有检查过,但 3.3.0 版本中的更改(如果不是更早的话)也可能解决了这个问题。)
160 亿字节和显示的“15G”之间的差异是因为这里的缩放是按 2 的幂进行的; 16411549690 除以 1024×1024×1024 是 15.284,显示为 15。当前版本free
添加i
到单位以明确他们正在使用二进制前缀。
答案2
这个问题混淆了两个不同的类别字节单位,即十进制G千兆字节和二进制吉双字节:
Prefixes for multiples of
bits (bit) or bytes (B)
Decimal Binary
Value SI Value IEC
1000 10^3 k kilo 1024 2^10 Ki kibi
1000^2 10^6 M mega 1024^2 2^20 Mi mebi
1000^3 10^9 G giga 1024^3 2^30 Gi gibi
该free -h
命令打印吉比字节,而free -b
打印字节。进行数学计算,(首先0
在字节数后加上 a 来补偿free
中指出的错误斯蒂芬·基特的回答):
echo $(( 16411549690 / (10**9) )) # gigabytes
echo $(( 16411549690 / (2**30) )) # gibibytes
输出:
16
15
硬盘驱动器供应商过去常常利用这种常见的混乱,有一家供应商甚至在集体诉讼中以败诉告终。看Orin Safier 诉西部数据公司,其中2006年,恼怒的购买者被授予30 美元每个备份软件的价值,而不是实际的金钱为了他们的烦恼。