linux中dmidecode命令(三)

dmidecode命令

跟硬件相關的命令有uname, lspci,/proc目錄下的文件等,有時候Linux/Unix系統下獲取有關硬件方面的信息,這個時候,就要用到dmidecode, 使用該命令可以查詢BIOS、系統、主板、處理器、內存、緩存等非常重要信息。下面是其常用的幾個命令:

dmidecode | grep 'Product Name'                           // 查看服務器型號
dmidecode | grep 'Serial Number'                         // 查看主板的序列號
dmidecode -s system-serial-number                        // 查看系統序列號
dmidecode -t memory                                          // 查看內存信息
dmidecode -t 11                                               // 查看OEM信息
dmidecode | grep -A16 "Memory Device" | grep "Size" |sed 's/^[ \t]*//'  // 現有內存數量和內存大小
dmidecode | grep "Maximum Capacity" |sed  "s/^[ \t]*//"                     // 最大支持內存容量:


備註:
-t  只顯示指定條目的信息
-s  只顯示指定DMI字符串關鍵字的信息

DMI (Desktop Management Interface)

 

dmidecode在 Linux 系統下獲取有關硬件方面的信息。dmidecode 遵循 SMBIOS/DMI 標準,以一種可讀的方式dump出機器的DMI(Desktop Management Interface)信息, 其輸出的信息包括 BIOS、系統、主板、處理器、內存、緩存等等, 既可以得到當前的配置,也可以得到系統支持的最大配置,比如說支持的最大內存數等。

 

1

2

3

4

aptitude install dmidecode # Debian/Ubuntu

yum install dmidecode # Fedora

pacman -S dmidecode # Arch Linux

emerge -av dmidecode # Gentoo

1、查看內存槽數、那個槽位插了內存,大小是多少

 

1

dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range

2、查看最大支持內存數

 

1

dmidecode|grep -P 'Maximum\s+Capacity'

3、查看槽位上內存的速率,沒插就是unknown。

 

1

dmidecode|grep -A16 "Memory Device"|grep 'Speed'

dmidecode的輸出格式一般如下:

 

1

2

3

4

5

6

7

Handle 0×0002

DMI type 2, 8 bytes

Base Board Information

Manufacturer:Intel

Product Name: C440GX+

Version: 727281-0001

Serial Number: INCY92700942

其中的前三行都稱爲記錄頭(recoce Header), 其中包括了:
1、recode id(handle): DMI表中的記錄標識符,這是唯一的,比如上例中的Handle 0×0002。
2、dmi type id: 記錄的類型,譬如說:BIOS,Memory,上例是type 2,即”Base Board Information”
3、recode size: DMI表中對應記錄的大小,上例爲8 bytes.(不包括文本信息,所有實際輸出的內容比這個size要更大。)
記錄頭之後就是記錄的值:
4、decoded values: 記錄值可以是多行的,比如上例顯示了主板的製造商(manufacturer)、model、version以及serial Number。
dmidecode的使用方法
1. 最簡單的的顯示全部dmi信息:

 

1

# dmidecode

這樣將輸出所有的dmi信息,你可能會被一大堆的信息嚇壞,通常可以使用下面的方法。
2.更精簡的信息顯示:

 

1

# dmidecode -q

-q(–quite) 只顯示必要的信息,這個很管用哦。
3.顯示指定類型的信息:
通常我只想查看某類型,比如CPU,內存或者磁盤的信息而不是全部的。這可以使用-t(–type TYPE)來指定信息類型:

 

1

2

3

# 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.通過關鍵字查看信息:
比如只想查看序列號,可以使用:

 

1

# dmidecode -s system-serial-number

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

 

1

2

3

4

5

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.

5.示例
5.1 查看當前內存和支持的最大內存
Linux下,可以使用free或者查看meminfo來獲得當前的物理內存:

 

1

2

3

4

5

6

7

# free

total used free shared buffers cached

Mem: 8182532 8010792 171740 0 148472 4737896

-/+ buffers/cache: 3124424 5058108

Swap: 4192956 3304 4189652

# grep MemTotal /proc/meminfo

MemTotal: 8182532 kB

這裏顯示了當前服務器的物理內存是8GB。
服務器到底能擴展到多大的內存?

 

1

2

3

4

5

6

7

8

9

10

11

12

#dmidecode -t 16

# dmidecode 2.7

SMBIOS 2.4 present.

 

Handle 0×0013, DMI type 16, 15 bytes.

Physical Memory Array

Location: System Board Or Motherboard

Use: System Memory

Error Correction Type: Multi-bit ECC

Maximum Capacity: 64 GB (可擴展到64GB)

Error Information Handle: Not Provided

Number Of Devices: 4

但是,事實不一定如此,因此插槽可能已經插滿了。也就是我們還必須查清這裏的8G到底是4*2GB, 2*4GB還是其他?
如果是4*2GB,那麼儘管可以擴展到64GB,但是插槽已經插滿,無法擴展了:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

#dmidecode -t 17

# dmidecode 2.7

SMBIOS 2.4 present.

 

Handle 0×0015, DMI type 17, 27 bytes.

Memory Device

Array Handle: 0×0013

Error Information Handle: Not Provided

Total Width: 72 bits

Data Width: 64 bits

Size: 2048 MB 【插槽1有1條2GB內存】

Form Factor: DIMM

Set: None

Locator: DIMM00

Bank Locator: BANK

Type: Other

Type Detail: Other

Speed: 667 MHz (1.5 ns)

Manufacturer:

Serial Number: BZACSKZ001

Asset Tag: RAM82

Part Number: MT9HTF6472FY-53EA2

 

Handle 0×0017, DMI type 17, 27 bytes.

Memory Device

Array Handle: 0×0013

Error Information Handle: Not Provided

Total Width: 72 bits

Data Width: 64 bits

Size: 2048 MB 【插槽2有1條2GB內存】

Form Factor: DIMM

Set: None

Locator: DIMM10

Bank Locator: BANK

Type: Other

Type Detail: Other

Speed: 667 MHz (1.5 ns)

Manufacturer:

Serial Number: BZACSKZ001

Asset Tag: RAM83

Part Number: MT9HTF6472FY-53EA2

 

Handle 0×0019, DMI type 17, 27 bytes.

Memory Device

Array Handle: 0×0013

Error Information Handle: Not Provided

Total Width: 72 bits

Data Width: 64 bits

Size: 2048 MB 【插槽3有1條2GB內存】

Form Factor: DIMM

Set: None

Locator: DIMM20

Bank Locator: BANK

Type: Other

Type Detail: Other

Speed: 667 MHz (1.5 ns)

Manufacturer:

Serial Number: BZACSKZ001

Asset Tag: RAM84

Part Number: MT9HTF6472FY-53EA2

 

Handle 0x001B, DMI type 17, 27 bytes.

Memory Device

Array Handle: 0×0013

Error Information Handle: Not Provided

Total Width: 72 bits

Data Width: 64 bits

Size: 2048 MB 【插槽4有1條2GB內存】

Form Factor: DIMM

Set: None

Locator: DIMM30

Bank Locator: BANK

Type: Other

Type Detail: Other

Speed: 667 MHz (1.5 ns)

Manufacturer:

Serial Number: BZACSKZ001

Asset Tag: RAM85

Part Number: MT9HTF6472FY-53EA2

根據上面輸出可以發現,如果要擴展,只有將上面的內存條換成16GB的,才能達到4*16GB=64GB的最大支持內存。
附錄:
dmidecode支持的數字參數:
Type Information

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

0 BIOS

1 System

2 Base Board

3 Chassis

4 Processor

5 Memory Controller

6 Memory Module

7 Cache

8 Port Connector

9 System Slots

10 On Board Devices

11 OEM Strings

12 System Configuration Options

13 BIOS Language

14 Group Associations

15 System Event Log

16 Physical Memory Array

17 Memory Device

18 32-bit Memory Error

19 Memory Array Mapped Address

20 Memory Device Mapped Address

21 Built-in Pointing Device

22 Portable Battery

23 System Reset

24 Hardware Security

25 System Power Controls

26 Voltage Probe

27 Cooling Device

28 Temperature Probe

29 Electrical Current Probe

30 Out-of-band Remote Access

31 Boot Integrity Services

32 System Boot

33 64-bit Memory Error

34 Management Device

35 Management Device Component

36 Management Device Threshold Data

37 Memory Channel

38 IPMI Device

39 Power Supply

 

轉載請註明出處:http://www.ttlsa.com/html/1708.html

一、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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章