前言:
二次修订:使用了更简便的语法
为啥要写这个教程?
还不是因为我的笔记本内存只有16G,想再买一条扩展但是又不知道已安装的是不是双内存,故出此教程!
本教程主要对于内存的已用内存插槽,内存频率,内存数量,每根内存的容量及品牌进行信息提取,借助本教程也可以扩展更多,例如主板,硬盘之类的信息等等,也可以把相关数据写成脚本直接一键检测与信息汇总。
1、准备工作
Linux操作系统(这不是废话吗)
dmidecode(可能自带,可能要自己安装)
2、工具安装
2.1、yum
CentOS及其他yum包管理器下无脑
yum install -y dmidecode
2.2、apt
debian及其他apt系无脑安装
apt install -y dmidecode
2.3、验证
终端下输入(使用超级权限,或者 前面加sudo,不会就别看了)
dmidecode
3、使用帮助
3.1、选项
可用选项列表
-d:(default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。
-h:显示帮助信息。
-s:只显示指定DMI字符串的信息。(string)
-t:只显示指定条目的信息。(type)
-u:显示未解码的原始条目内容。
--dump-bin file:将DMI数据转储到一个二进制文件中。
--from-dump FILE:从一个二进制文件读取DMI数据。
-V:显示版本信息。
3.2、-t详解
根据需求,目前只需要-t选项即可实现,所以下面对-t(type)进行详解
根据主要信息可以分为以下几个参数进行针对性的查询
bios/基本输入输出系统
system/系统
baseboard/主板
chassis/机箱风扇
processor/中央处理器,即CPU
memory/内存
Cache/缓存
connector/连接器
slot
4、实践
4.1、获取内存条数量
使用下面的命令获取内存条数量
dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Memory Device' | wc -l
执行结果
root@l:~# dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Memory Device' | wc -l
2
root@l:~#
也就是两根
4.2、获取内存条频率
命令如下:
dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Speed:'
结果如下:
root@l:~# dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Speed:'
Speed: 2667 MT/s
Speed: 2667 MT/s
root@l:~#
可以看出,这是2666的内存(别跟我杠2667)
PS:出现两个结果是因为有两条内存条,后面的信息也是如此
4.3、获取内存条制造商信息
命令如下:
dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Manufacturer:' | awk '{print $2}'
执行结果:
root@l:~# dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Manufacturer:' | awk '{print $2}'
Hynix
Hynix
可以看出,两根都是海力士(Hynix)的内存
4.4、获取每根内存条的容量(单位:MB)
命令如下
dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Size:' | awk '{print $2}'
执行结果:
root@l:~# dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Size:' | awk '{print $2}'
8192
8192
4.5、获取内存条类型
目前主流是DDR4,获取的命令如下:
dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Type:' | awk '{print $2}'
执行结果:
root@l:~# dmidecode | grep -C 16 'Speed:' | grep -A 16 "Memory Device" | grep 'Type:' | awk '{print $2}'
DDR4
DDR4
root@l:~#
好啦,到这里我需要的信息都有了。