引言

当我们需要获取机器硬件信息时,可使用linux系统自带的dmidecode工具进行查询。

dmidecode命令通过读取系统DMI表,显示服务器硬件和BIOS信息。除了可使用dmidecode查询机器现有配置,还可以查询机器最大的可支持配置(例如现有的内存,机器最多可支持的内存)。

dmidecode命令输出格式

执行dmidecode命令,输出如下:

#dmidecode | head -10
# dmidecode 2.9
SMBIOS 2.4 present.
 structures occupying  bytes.
Table at 0x000DC010.

Handle ,  bytes
BIOS Information
  Vendor: LENOVO
  Version: 05CN39WW(V1.)
  Release Date: //

以上输出中,前面4条是dmidecode命令整体信息,“25 structures occupying 844 bytes.”该行指示该机器的DMI记录项总共有25条。

后面就是DMI表中各条记录,每条记录的输出格式如下:

Record Header:  Handle {record id}, DMI type {dmi type id}, {record size} bytes

Record Value:   {multi line record value}

record id: DMI表中每条记录唯一的标识

dmi type id: 记录的类型,比如BIOS,Memory等

record size: DMI表中该条记录的大小

multi line record values: 多行与该DMI类型相关的字段描述

DMI类型

DMI表包含以下DMI类型,每个DMI Type值对应一项硬件信息:

Type   Information
----------------------------------------
        BIOS
        System
        Base Board
        Chassis
        Processor
        Memory Controller
        Memory Module
        Cache
        Port Connector
        System Slots
       On Board Devices
       OEM Strings
       System Configuration Options
       BIOS Language
       Group Associations
       System Event Log
       Physical Memory Array
       Memory Device
       -bit Memory Error
       Memory Array Mapped Address
       Memory Device Mapped Address
       Built-in Pointing Device
       Portable Battery
       System Reset
       Hardware Security
       System Power Controls
       Voltage Probe
       Cooling Device
       Temperature Probe
       Electrical Current Probe
       Out-of-band Remote Access
       Boot Integrity Services
       System Boot
       -bit Memory Error
       Management Device
       Management Device Component
       Management Device Threshold Data
       Memory Channel
       IPMI Device
       Power Supply

根据上表我们亦可知道,可以通过dmidecode命令查到哪些硬件信息,例如要查询主板(Base Board)的信息,可以执行以下命令:

#dmidecode -t 2
# dmidecode 2.9
SMBIOS 2.4 present.

Handle ,  bytes
Base Board Information
Manufacturer: LENOVO
Product Name: IGT30
Version: REFERENCE
Serial Number:  

除了使用DMI Type_id作为索引进行查询外,还可以通过设备关键词查询,设备关键词与Type_id对应关系如下:

Keyword       Types
------------------------------
bios          ,
system        , , , ,
baseboard     ,
chassis
processor
memory        , , ,
cache
connector
slot          

这样,执行“dmidecode –t baseboard”命令将显示type_id为2、10项的信息。

使用dmidecode命令查询内存(RAM)信息

最后来看个使用dmidecode命令的例子,如何使用dmidecode命令查询内存信息。

首先,可以通过以下命令查询机器最大支持的内存总量:

#dmidecode -t 16
# dmidecode 2.9
SMBIOS 2.4 present.

Handle ,  bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity:  GB
Error Information Handle: Not Provided
Number Of Devices: 

从以上输出可知,该机器理论上支持的最大内存为4G。

然后使用以下命令查询机器可用的内存:

#grep MemTotal /proc/meminfo
MemTotal:         kB

可以看到机器可用的内存为2G,也即我们可以再扩2G内存。

但是在用的2G内存是怎么组成的?是1条2G内存?是2条1G内存?

我们可以通过以下命令进行查询:

#dmidecode -t 17
# dmidecode 2.9
SMBIOS 2.4 present.

Handle ,  bytes
Memory Device
Array Handle: 0x000D
Error Information Handle: No Error
Total Width:  bits
Data Width:  bits
 MB
Form Factor: SODIMM
Set:
Locator: M1
Bank Locator: Bank
Type: DDR2
⋯⋯

Handle ,  bytes
Memory Device
Array Handle: 0x000D
Error Information Handle: No Error
Total Width:  bits
Data Width:  bits
 MB
⋯⋯

从以上信息可以看出,该机器插了2条1G的内存。

小结

使用linux系统自带工具dmidecode可以查看机器硬件信息,较常用到以下几条命令。

查询机器型号:

#dmidecode | grep -i product
Product Name: TIANYI F41A
Product Name: IGT30

查询内存条数:

#dmidecode -t 17 | grep "Size.*MB" | wc -l

查询物理CPU信息:

#dmidecode -t 4

另外也可通过/proc查询CPU相关信息。

查询物理CPU个数:

#cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l

查询CPU核数:

#cat /proc/cpuinfo | grep 'core id'| wc -l

本文翻译自 How To Get Hardware Information On Linux Using dmidecode Command

如何使用dmidecode命令查看硬件信息的更多相关文章

  1. linux下dmidecode命令获取硬件信息

    linux下dmidecode命令获取硬件信息 2 A+ 所属分类:Linux 运维工具 dmidecode在 Linux 系统下获取有关硬件方面的信息.dmidecode 遵循 SMBIOS/DMI ...

  2. 如何在windows系统自带命令查看硬件信息?

    如何在windows系统自带命令查看硬件信息? 对于在windows下查看系统信息大家一定不陌生了,我现在说几个最常用的方法,对命令感兴趣的朋友看看,(给菜鸟看的,老手就不要笑话我了,大家都是从那个时 ...

  3. [转帖]如何在Linux上使用命令行查看硬件信息

    如何在Linux上使用命令行查看硬件信息 时间:2016-01-13   作者:admin 分类:新手入门 阅读:126次 http://embeddedlinux.org.cn/emb-linux/ ...

  4. windows用命令行查看硬件信息

    如何在windows系统自带命令查看硬件信息,怎样dos命令查看硬盘和内存/CPU信息?最直接的是:开始→运行→CMD打开命令提示符,在该窗口下输入systeminfo执行,即可看到几乎所有想知道的系 ...

  5. windows查看硬件信息系统信息

    rem 查看cpu wmic cpu list briefrem 查看物理内存wmic memphysical list briefrem 查看逻辑内存wmic memlogical list bri ...

  6. Linux 系统下查看硬件信息命令大全

    有许多命令可以用来查看 Linux 系统上的硬件信息.有些命令只能够打印出像 CPU 和内存这一特定的硬件组件信息,另外一些命令可以查看多种硬件组件的信息. 这个教程可以带大家快速了解一下查看各种硬件 ...

  7. linux查看硬件信息及驱动设备相关整理

    查看声卡设备:cat /proc/asound/cards 查看USB设备:cat /proc/bus/usb/devices 常用命令整理如下:用硬件检测程序kuduz探测新硬件:service k ...

  8. Linux查看硬件信息(北桥芯片组、南桥、PCI接口、CPU等)

    Linux查看硬件信息(北桥芯片组.南桥.PCI接口.CPU等) Linux查看硬件信息(北桥芯片组.南桥.PCI接口.CPU等) 查看MCH(北桥) 查看ICH(南桥) 查看CPU 查看pci接口设 ...

  9. bat命令查询硬件信息

    bat命令查询硬件信息 50 需求是这样的写一个bat命令,当命令执行的时候,先请用户输入姓名,然后继续执行查询出以下信息并写入一个文件,文件名称随便,文件可以放在与当前命令同一个文件夹下.最终文件中 ...

随机推荐

  1. JPA自定义实体的id

    背景:继上一篇文章,已经实现客户端数据库数据,存入服务器,但是,两张表的id不一样,应该是id设置自增了,所以虽然从客户端查出的实体带id,但是存入服务器时id被抹掉,按照服务端表的id序号向上自增, ...

  2. 爬虫之抓js教程

    在初学的爬虫过程中,很多人还不知道有些字段是如何生成的,怎样模拟生成这些字段来拼接头部.为了再次纪念[宏彦获水]成语初次面世,特地用[百度登陆]写下一篇登陆百度的教程,以供大家参考. 前面学习了如何在 ...

  3. JavaSE核心知识

    一:Java简介 1. Java语言的介绍:Java是一门面向对象编程语言,具有功能强大和简单易用两个特征. 2. Java语言的特点:简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多 ...

  4. 企业如何从“API优先”的策略中获益

    在过去的几年里,全球API经济在以难以置信的速度进行快速地增长.物联网.人工智能.自动驾驶等等众多令人充满期待的技术正蓬勃发展,这也证明了API对于如今整个技术圈子的重要性,也预示着在不久的将来它还将 ...

  5. c# Inner Join sql 和 Enumerable.Join

    using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp1 { class Pro ...

  6. Python入门基础(8)

    上一篇介绍了一些python中函数的基本用法,那么,现在就来谈一谈python中的一些内置函数吧 python中的内置函数 1.map()函数 map()函数接受两个参数值,一个是函数,一个是Iter ...

  7. Excel催化剂开源第37波-音视频文件元数据提取(分辨率,时长,采样率等)

    上一篇提到图片元信息Exif的提取,当然还有一类音视频文件,也同样存储着许多宝贵的元数据,那就开源到底呗,虽然自己找寻过程也是蛮艰辛坎坷的,大家看后有收获,只求多多传播下,让前人的工作可以更有价值. ...

  8. 个人永久性免费-Excel催化剂功能第67波-父子结构表转换添加辅助信息之子父关系篇

    Excel作为一款数据领域的万物互联工具,连接一切外部的多种多样的数据源.将数据带到Excel的环境中,再进行数据处理.转换.统计分析等工作,是众多表哥表姐们每天都在经历的事情.能最快速将其他来源数据 ...

  9. 浅入深出Vue:代码整洁之去重

    在开始本篇的主题之前,让我们把上次遗留下来的问题都清理一下: 将其他组件中 axios 请求的地方封装起来. 这里就不把代码放在开头了,相关代码都放在文末,有兴趣了解的童鞋可以先往下翻. 好了, 我们 ...

  10. Uncaught ReferenceError: xxx is not defined 解决办法

    VM11371:1 Uncaught ReferenceError: inputSize is not defined    at <anonymous>:1:1 解决办法(根据需求调整) ...