如何在 Linux 中使用 dmidecode 命令?

如果我们有兴趣了解计算机的硬件详细信息,“dmidecode 命令”是 Linux 的首选命令。 硬件信息范围从 BIOS(基本输入/输出系统)信息到内存设备的大小。

当我们跑 dmidecode 在终端上,系统检索 DMI (桌面管理界面)表,其主要目的是为管理软件提供此类关键细节。 在某种程度上,该命令充当 DMI 表的解码器,因此名称为“dmidecode”。

如何运行 dmidecode 命令?

由于序列号和 MAC 地址等硬件信息对系统所有者是机密的,因此此命令需要超级用户权限。 最简单的方法是使用 sudo dmidecode 并输入密码。

dmidecode 详细信息

另一种方式是切换到root用户 sudo su 或者 sudo -s. 单击此处了解更多信息 sudo. 输入密码后,终端以root用户运行。 它由主机名前的关键字“root”表示。

标准的 dmidecode 输出是什么样的?

每个表条目都具有以下元素。

dmidecode 表项

DMI 类型

类型编号起着重要作用,因为它可用于通过运行以下命令来提取表中的特定条目。 让我们从基于 dmi 类型使用 dmidecode 命令提取数据开始。

基于DMI类型提取

dmidecode -t 4 
Dmidecode 类型示例dmidecode 类型 4 – 处理器信息

每种类型对应于特定类别的信息。 例如,如上图所示,“类型 4”侧重于处理器信息。

有关 DMI 类型的更多信息

要找出类型编号与其分类信息的映射,我们始终可以使用 man 命令参考终端中的手册页。

man dmidecode 

向下滚动手册后,您可以找到所有指定的 DMI 类型

Dmi 类型 DmidecodeDMI 表类型

使用多种 DMI 类型显示条目

显示多种类型的硬件信息 -t <TYPE NO.> 每次都重复。 例如,要在同一实例中显示底板和机箱信息,我们运行:

dmidecode -t 2 -t 3  

或者,

dmidecode -t 2,3 

DMI 关键字

除了用 DMI 编号显示详细信息外,我们还可以使用特殊关键字,如“bios”、“memory”等。这可以通过以下方式完成:

dmidecode -t bios 

参考上面的DMI Types表,我们可以注意到类型号0和13对应的是BIOS相关信息,因此输出:

Dmidecode 关键字生物BIOS关键字输出

为了获得更多关于内置关键字类型的知识,我们可以再次查看手册页。 我们会找到以下关键词:

Dmidecode 关键字类型dmidecode 关键字

笔记: dmidecode 中的关键字不区分大小写匹配。 dmidecode -t biosdmidecode -t BiOs 给出相同的输出。 如果提供的参数不是有效的关键字,终端会显示所有有效的关键字。

DMI 字符串

确实还有另一种方法可以显示此类敏感信息——使用字符串。 这些字符串是预定义的并存储一些偏移量,这有助于系统查找其对应的值。 假设我们要检查我们的处理器版本,我们将执行以下命令:

dmidecode -s processor-version 

输出:

Dmidecode String Proc 版本使用 dmidecode 的处理器版本

注意:这些字符串可以根据系统配置提供多个输出。 如果我们输入了一些无效的字符串,终端会显示各种预定义的字符串关键字。

解码另一个设备文件的内容

默认情况下,dmidecode 从 /dev/mem 文件。 想要查询更多的信息。 请参阅此 StackOverflow 问题。 如果我们需要从不同的设备文件解码 DMI 表,我们运行:

dmidecode -d FILENAME 

如何转储 dmidecode 数据?

Linux 还提供转储 DMI 表内容的服务,而不是对其进行解码。 此类转储主要用于调试目的,但它也可以帮助我们解码其他系统的 DMI 表。 有两种方法可以使用转储内容 dmidecode

十六进制转储 – 此转储的输出包含十六进制格式的数据以及各种字符串。

dmidecode -u -t 0 
Dmidecode 十六进制转储BIOS 的十六进制转储

二进制转储 – 完整的 DMI 表以二进制格式转储到文件中。

dmidecode --dump-bin FILENAME 
Dmidecode Bin 转储 将完整的二进制文件转储到 dump_file 中

从二进制转储文件中提取 DMI 数据

您还可以使用以下命令从转储文件中读取二进制数据。

dmidecode --from-dump FILENAME 
转储的 Dmidecode从 dump_file 中提取 DMI 数据

额外的 dmidecode 命令选项

有一些简单的命令可以使用以下命令提取一些关键信息 dmidecode.

RAM/s 当前大小:以下命令列出所有内存插槽中的 RAM 大小。

dmidecode -t 17 | grep -i size  
Dmidecode 当前 RAM使用 dmidecode 的当前 RAM 大小

笔记: 管道符号 (|),用于将一个子命令的输出传递给另一个。 在后一个子命令中 grep 是一个搜索工具。 有关详细信息,请参阅此处。

最大内存容量:为了升级系统的RAM,您必须知道系统可以承受的最大容量。 可以通过以下方式知道:

dmidecode -t 16 | grep -i max 
Dmidecode Max Ram使用 dmidecode 的最大 RAM 容量

核心数和线程数:在多线程环境中,核心数和线程数起着巨大的作用。 为了找出它们的数量,我们运行:

dmidecode -t 4 | grep -iw count 
Dmidecode 核心数使用 dmidecode 计算内核和线程数

我们总是可以使用“man dmidecode" 对于严谨的细节。 此外,为了理解 dmidecode 选项,您可以输入 "dmidecode -h".

结论

我们希望本教程能帮助您详细了解 dmidecode 命令。 不要忘记查看我们最近关于 awk 和 sed 的一些文章。 如果您有任何问题,请随时与我们联系。