首页 > Sysadmin > 正文

Linux 查看内存大小与频率的完整指南

huyuanwen 2026-11-02 Sysadmin

TL;DR:free -h 看总量;/proc/meminfo 字段全;lshw 列硬件;dmidecode 读频率,需 root

—

快速查看总内存

直接看 free -h,一行出总容量、已用、可用和交换区。参数 -h 自动转成人类可读单位(GiB/MiB)[1]。

free -h

预期输出里 total 列就是物理内存总和,available 列才是真正还能分配给新进程的余量。

—

查看内存详细信息

/proc/meminfo 是内核导出的原始内存统计,字段最全。前几行里 MemTotal、MemFree、MemAvailable、SwapTotal、SwapFree 是最常用的 [3]。

head -n 20 /proc/meminfo

如果只想抓总容量,用 grep 过滤更轻量:grep -E '^MemTotal:' /proc/meminfo。

—

查看内存频率与类型

dmidecode 读取 SMBIOS 表,能列出每条内存条的类型(DDR4/DDR5)、速率、厂商和序列号。它需要 root 权限,而且只在真实硬件上有完整数据 [4]。

dmidecode --type memory

典型输出会看到 Type: DDR5、Speed: 5600 MHz 这样的字段。若字段显示 Unknown,可能是主板或固件未提供该数据。

局限性:WSL2 不暴露 SMBIOS,dmidecode 会报 No SMBIOS nor DMI entry point found。本命令在真实 Ubuntu/Debian 机器上可验证,WSL 侧仅基于文档核查,尚未实际执行。

—

查看内存硬件映射

lshw 用 sysfs 和 DMI 信息汇总硬件,-short -class memory 只输出内存设备 [5]。

lshw -short -class memory

输出会显示 System memory 及其总大小。配合 -C memory 可以看到更详细属性;在真实硬件上还可能看到 clock: 3200MHz 之类频率字段。

/proc/iomem 列出系统 RAM 的物理地址范围,适合排查内存占用的低阶问题 [2]。

head -n 20 /proc/iomem

—

不同场景选哪条命令

场景 推荐命令 说明
只看总容量 free -h 一行搞定
脚本取字段 grep MemTotal /proc/meminfo 适合 awk/sed 处理
硬件清单 lshw -short -class memory 需安装 lshw
内存条详情/频率 dmidecode --type memory 需 root + SMBIOS
地址映射 cat /proc/iomem 内核视角

—

排错速查表

现象 原因 处理
free 显示 0 可用 内存耗尽或被缓存占满 先看 buff/cache,通常不是真耗尽
dmidecode 报 no SMBIOS 虚拟机/WSL/容器无 DMI 表 改用 lshw 或宿主机命令
lshw 无输出 未安装 lshw apt install lshw
/proc/meminfo 字段被截断 手动 head -n 行数太少 去掉 head 或调大行数

—

局限性

  • WSL2 无 SMBIOS,dmidecode 无法返回实际内存条频率和类型,相关结果仅基于官方手册描述,未在 WSL 侧执行验证。
  • 部分云服务器或容器会屏蔽 /proc/meminfo 部分字段,视虚拟化方案而定。
  • 内存频率最终取决于主板和内存条固件设置,Linux 命令只是读取,不能修改频率。

—

附录:实测记录

测试机器:WSL2 Ubuntu-24.04(systemd 启用) 内核:5.15.146.1-microsoft-standard-WSL2 日期:2026-11-02 实测命令及结果:

命令 结果
free -h 通过,输出 7.6Gi 总内存
head -n 20 /proc/meminfo 通过,字段完整
grep -E '^MemTotal:' /proc/meminfo 通过,7980092 kB
lshw -short -class memory 通过,8064MiB System memory
dmidecode --type memory WSL 报错:No SMBIOS,标记为文档核查

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。