在 Linux 系统中,MemTotal 是判断物理内存总容量最可靠的依据,单位为 KB,可直接通过 /proc/meminfo 读取;free -h 展示的是内核当前实际识别并管理的总内存;dmidecode 则用于查看硬件标称容量,但需要 sudo 权限,且不代表这些内存一定已被内核启用。

想查看 Linux 内存大小,最直接的方法就是看 MemTotal 字段。它表示系统物理内存总容量,单位是 KB,比其他查询方式更准确、更值得参考。
用 free -h 快速查看 Linux 总内存
这是查看 Linux 内存信息时最常见、也最方便的命令:
- 执行
free -h后,第一行Mem:后面的total数值,就是当前系统可识别的物理内存总量(已扣除内核保留及部分不可用区域) - 需要注意的是:
free显示的是内核实际识别并可管理的内存,因此与 BIOS/UEFI 中看到的插槽总容量可能存在细微差别,例如部分内存被显卡或其他硬件预留 - 如果
total明显小于内存条标称容量,例如安装了 32GB 但系统只显示 31.2GiB,通常说明有一部分内存被 GPU 或集成显卡占用,此时可以通过dmesg | grep -i memory查看启动日志中的内存保留记录
从 /proc/meminfo 获取原始内存数据
几乎所有 Linux 内存查看工具底层都依赖这个文件,因此它通常被视为最权威的来源:
- 运行
grep MemTotal /proc/meminfo,会得到类似MemTotal: 32857904 kB的输出 - 这个数值表示内核启动时探测并确认可用的物理内存上限,没有经过额外的界面换算或展示层处理
- 如果想把结果换算成 GB,可以直接除以 1024²,例如:
awk '/MemTotal/ {printf "%.1f GBn", $2/1024/1024}' /proc/meminfo - 不要把
cat /proc/meminfo输出中的其他字段误认为总内存,例如MemA vailable反映的是可用内存情况,并不等于内存总大小
用 dmidecode 查看内存插槽和硬件容量
如果你想确认内存条是否插好、插槽是否识别正常,或者排查硬件层面的容量问题,可以通过 SMBIOS 查询:
- 执行
sudo dmidecode -t memory | grep -E "Size|Speed|Type" - 每一条
Size:信息通常代表一个内存插槽的容量,若显示Size: No Module Present,则表示该插槽为空 - 需要注意:普通用户通常没有权限直接运行
dmidecode,必须使用sudo;在部分云服务器或容器环境中,该命令也可能无法使用,因为无法访问底层固件信息 - 该命令显示的是内存条或 DIMM 的标称容量,并不能说明内核是否已经完全启用这些内存;例如安装了 ECC 内存但 BIOS 中关闭了相关功能,
dmidecode依然会显示容量,而/proc/meminfo中的总量可能略少
有一个细节在查看 Linux 内存大小时非常容易被忽略:内存总量并不等于“机器里一共插了多少内存条”,而是“内核最终成功识别了多少内存”。因此,/proc/meminfo 中的 MemTotal 才是最值得信赖的判断标准,其他结果本质上都只是基于它的进一步展示或换算。如果 free -h 和 dmidecode 的数据不一致,应优先参考前者;如果连 MemTotal 都明显偏小,比如远低于硬件标称规格,那么问题通常出在 BIOS 设置、内核启动参数(例如 mem= 限制)或硬件兼容性方面。
