首頁 > 軟體

dmidecode命令詳解(獲取硬體資訊)

2020-06-16 17:48:07

一、dmidecode簡介

      dmidecode允許你在Linux系統下獲取有關硬體方面的資訊。dmidecode遵循SMBIOS/DMI標準,其輸出的資訊包括BIOS、系統、主機板、處理器、記憶體、快取等等。

      DMI(Desktop Management Interface,DMI)就是幫助收集電腦系統資訊的管理系統,DMI資訊的收集必須在嚴格遵照SMBIOS規範的前提下進行。SMBIOS(System Management BIOS)是主機板或系統製造者以標準格式顯示產品管理資訊所需遵循的統一規範。SMBIOS和DMI是由行業指導機構Desktop Management Task Force(DMTF)起草的開放性的技術標準,其中DMI設計適用於任何的平台和作業系統。

DMI充當了管理工具和系統層之間介面的角色。它建立了標準的可管理系統更加方便了電腦廠商和使用者對系統的了解。DMI的主要組成部分是Management Information Format(MIF)資料庫。這個資料庫包括了所有有關電腦系統和配件的資訊。通過DMI,使用者可以獲取序列號、電腦廠商、串列埠資訊以及其它系統配件資訊。

二、dmidecode的作用

      dmidecode的作用是將DMI資料庫中的資訊解碼,以可讀的文字方式顯示。由於DMI資訊可以人為修改,因此裡面的資訊不一定是系統準確的資訊。

三、dmidecode命令用法

    不帶選項執行dmidecode通常會輸出所有的硬體資訊。dmidecode有個很有用的選項-t,可以指定型別輸出相關資訊。假如要獲得處理器方面的資訊,則可以執行:dmidecode -t processor

Usage: dmidecode [OPTIONS]

Options are:

-d:(default:/dev/mem)從裝置檔案讀取資訊,輸出內容與不加引數標準輸出相同。

-h:顯示幫助資訊。

-s:只顯示指定DMI字串的資訊。(string)

-t:只顯示指定條目的資訊。(type)

-u:顯示未解碼的原始條目內容。

-- dump-bin FILE: Dump the DMI data to a binary file.

-- from-dump FILE: Read the DMI data from a binary file.

-V:顯示版本資訊

dmidecode的輸出格式一般如下:

Handle 0x0002, DMI type 2, 95 bytes.

Base Board Information

    Manufacturer: IBM

    Product Name: Node1 Processor Card

    Version: Not Specified

    Serial Number: Not Specified

其中記錄頭(recode header)包括了:

recode id(Handle):DMI表中的記錄識別符號,這是唯一的,比如上例中的Handle 0x0002.

DMI type id:記錄的型別,譬如說:BIOS,Memory,上例是type 2,即“Base Board Information”.

recode size:DMI表中對應記錄的大小,上例為95 bytes。(不包括文字資訊,所有實際輸出的內容比這個size要更大)。記錄頭之後就是記錄的值。

recoded values:記錄值可以是多行的,比如上例顯示了主機板的製造商(Manufacturer)、Product Name、Version以及Serial Number。

1. 最簡單的的顯示全部dmi資訊:

[root@BAIYU_180 ~]# dmidecode
[root@BAIYU_180 ~]# dmidecode|wc -l
6042

這樣將輸出所有的dmi資訊,你可能會被一大堆的資訊嚇壞,通常可以使用下面的方法。
2.顯示指定型別的資訊:
通常我只想檢視某型別,比如CPU,記憶體或者磁碟的資訊而不是全部的。這可以使用-t(–type TYPE)來指定資訊型別:

# dmidecode -t bios
# dmidecode -t bios, processor (這種方式好像不可以用,必須用下面的數位的方式)
# dmidecode -t 0,4 (顯示bios和processor)

dmidecode到底支援哪些type?
這些可以在man dmidecode裡面看到:
文字引數支援:
bios, system, baseboard, chassis, processor, memory, cache, connector, slot
數位引數支援很多:(見附錄)
4.通過關鍵字檢視資訊:
比如只想檢視序列號,可以使用:

# dmidecode -s system-serial-number

-s (–string keyword)支援的keyword包括:

bios-vendor,bios-version,bios-release-date,

system-manufacturer,system-product-name,system-version,system-serial-number,

baseboard-manu-facturer,baseboard-product-name,baseboard-version,baseboard-serial-number,baseboard-asset-tag,

chassis-manufacturer,chas-sis-version,chassis-serial-number,chassis-asset-tag,

processor-manufacturer,processor-version.

四、範例

檢視當前記憶體和支援的最大記憶體
Linux下,可以使用free或者檢視meminfo來獲得當前的實體記憶體:

[root@SC4304 ~]# free
            total      used      free    shared    buffers    cached
Mem:    132091660    5649612  126442048          0    224492    4052384
-/+ buffers/cache:    1372736  130718924
Swap:    209715192          0  209715192
[root@SC4305 ~]# free -m
            total      used      free    shared    buffers    cached
Mem:        128995      6230    122765          0        259      4615
-/+ buffers/cache:      1354    127640
Swap:      204799          0    204799

這裡顯示了當前伺服器的實體記憶體是128GB。
伺服器到底能擴充套件到多大的記憶體?

[root@SC4304 ~]# dmidecode -t 16
# dmidecode 2.11
# SMBIOS entry point at 0xb89a5000
SMBIOS 2.7 present.
 
Handle 0x1000, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC
    Maximum Capacity: 1536 GB
    Error Information Handle: Not Provided
    Number Of Devices: 24

從上面的資訊我們可以看出:

記憶體插槽數:24個

最大擴充套件記憶體:1536G

單跟記憶體條最大:64G

現在記憶體為:128G

但是,我們還必須查清這裡的128G到底是16*8GB, 2*64GB還是其他?就是檢視已使用的插槽數
如果是2*64GB,那麼可以擴充套件到1536GB,但是如果插槽已經插滿,無法擴充套件了:

1、檢視記憶體槽數、哪個槽位插了記憶體,大小是多少

 [root@SC4305 ~]# dmidecode|grep -A5 'Memory Device'|grep Size
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed
    Size: No Module Installed

2、檢視最大支援記憶體數

 [root@SC4305 ~]# dmidecode|grep 'Maximum Capacity'
    Maximum Capacity: 1536 GB

3、檢視槽位上記憶體的速率,沒插就是unknown。

 [root@SC4305 ~]# dmidecode|grep -A16 'Memory Device'|grep 'Speed'
    Speed: 1600 MHz
    Speed: 1600 MHz
    Speed: 1600 MHz
    Speed: 1600 MHz
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: 1600 MHz
    Speed: 1600 MHz
    Speed: 1600 MHz
    Speed: 1600 MHz
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown
    Speed: Unknown

五、一個檢視基本硬體資訊的shell指令碼

[root@SC4306 test]# cat test.sh
#!/bin/bash 
echo "IP:" 
ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk '{print $2}'|awk -F ':' '{print $2}' 
echo "Product Name:" 
dmidecode |grep Name 
echo "CPU Info:" 
dmidecode |grep -i cpu|grep -i version|awk -F ':' '{print $2}' 
echo "Disk Info:" 
parted -l|grep 'Disk /dev/sd'|awk -F ',' '{print "  ",$1}' 
echo "Network Info:" 
lspci |grep Ethernet 
echo "Memory Info:" 
dmidecode|grep -A5 "Memory Device"|grep Size|grep -v No 
echo "Memory number:"`dmidecode|grep -A5 "Memory Device"|grep Size|grep -v No|wc -l`

輸出結果:

[root@SC4306 test]# bash test.sh
IP:
10.0.17.6
10.0.250.6
Product Name:
    Product Name: PowerEdge R720
    SKU Number: SKU=NotProvided;ModelName=PowerEdge R720
    Product Name: 0DCWD1
CPU Info:
      Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
      Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
Disk Info:
    Disk /dev/sda: 1074GB
    Disk /dev/sdb: 18.9TB
Network Info:
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
Memory Info:
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
    Size: 16384 MB
Memory number:8

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-12/126814.htm


IT145.com E-mail:sddin#qq.com