You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux 32G内存显示为31G,如何获取准确32G显示结果?

解决Linux内存显示为31G而非标注32G的问题

嗨,这个情况其实挺常见的,核心原因是内存单位进制的差异和整数除法的取舍规则:厂商标注的32G是按十进制(1GB=1000MB=109字节)计算的,而Linux默认采用二进制(1GiB=1024MiB=230字节)统计,再加上整数除法直接舍去小数部分,就出现了“明明是32G机器却显示31G”的情况。

下面给你几个能得到"32G"显示结果的实用方法:

方法1:四舍五入计算内存值

利用工具处理小数,让计算结果四舍五入到整数:

  • 用awk快速实现:
    cat /proc/meminfo | grep MemTotal | awk '{printf "%dG\n", ($2/1024/1024)+0.5}'
    
    原理是把计算出的31.25加上0.5后取整,直接得到32。
  • 用bc工具分步计算:
    mem=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}')
    echo "scale=0; $mem / 1024 / 1024 + 0.5" | bc
    

方法2:按厂商的十进制单位计算

直接采用1000进制换算,和厂商标注的规则对齐:

cat /proc/meminfo | grep MemTotal | awk '{printf "%dG\n", $2/1000/1000}'

你的MemTotal是32767184 KB,除以1000两次得到约32.76,取整后就是32G。

方法3:调整free命令的显示格式

free命令默认用二进制单位,加上--si参数就能切换为十进制单位:

free --si -g

执行后Mem行的总内存就会显示为32G了。

简单总结下:你机器的实际物理内存确实是厂商标注的32GB(十进制),只是Linux默认用GiB(二进制)统计,所以才会显示31GiB,以上方法都能让你得到和标注一致的"32G"结果。

内容的提问来源于stack exchange,提问作者yael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:14:58