Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux 服务器硬件

Linux 服务器硬件数据的收集及使用案例

作者:凤凰战士芭比Q

这篇文章主要介绍了Linux 服务器硬件数据的收集,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Linux 服务器硬件数据的收集

在Linux服务器上,可以使用一些命令来收集硬件数据,比如:

dmidecode

dmidecode是一款在Linux系统中用于获取计算机硬件系统信息的工具,可以获取到主板、BIOS、CPU、内存、硬盘等硬件信息。下面对dmidecode命令进行详解:

dmidecode [options]

常用选项:

dmidecode支持的数字参数如下:

编号信息
0计算机的基本输入输出系统,是计算机启动时加载的程序
1计算机系统的基本信息,如制造商、型号、序列号等
2主板的详细信息,如制造商、型号、序列号等
3机箱的详细信息,包括制造商、型号、序列号等
4CPU 的详细信息,包括制造商、型号、频率等
5内存控制器的详细信息,包括制造商、型号、频率等
6内存模块的详细信息,包括制造商、型号、容量等
7CPU 缓存的详细信息,包括缓存级别、容量等
8接口连接器的详细信息,如USB、SATA、PCI-E等
9系统插槽的详细信息,如PCI-E插槽、内存插槽等
10主板上的集成设备,如网卡、声卡等
11OEM厂商的信息
12系统配置选项的详细信息,如BIOS设置等
13BIOS的语言信息
14组关联信息
15系统事件日志信息
16物理内存信息
17内存设备的详细信息,如制造商、型号、容量等
1832位内存错误信息
19内存阵列映射地址的信息
20内存设备映射地址的信息
21内置指针设备的信息,如触摸板、指点杆等
22便携电池的信息
23系统重置信息
24硬件安全信息,如TPM
25系统电源控制信息
26电压探头的信息
27散热设备的信息,如CPU散热器、机箱风扇等
28温度探头的信息
29电流探头的信息
30远程访问信息
31启动完整性服务的信息
32系统启动信息
3364位内存错误信息
34管理设备的信息
35管理设备组件的信息
36管理设备阈值数据的信息
37内存通道的信息,如单通道、双通道等
38IPMI设备的信息
39电源的信息
40额外的信息
41扩展的集成设备信息
42管理控制器主机接口的信息

使用案例

显示BIOS版本号

[root@localhost ~]# dmidecode -s bios-version
6.00

显示整个系统的硬件信息,例如主板型号

[root@localhost ~]# dmidecode -t 2
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: Intel Corporation
        Product Name: 440BX Desktop Reference Platform
        Version: None
        Serial Number: None
        Asset Tag: Not Specified
        Features: None
        Location In Chassis: Not Specified
        Chassis Handle: 0x0000
        Type: Unknown
        Contained Object Handles: 0

显示整个系统的CPU信息

......
......
......
Handle 0x0082, DMI type 4, 42 bytes
Processor Information
        Socket Designation: CPU #127
        Type: Central Processor
        Family: Unknown
        Manufacturer: GenuineIntel
        ID: EA 06 00 00 FF FB 8B 1F
        Version: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
        Voltage: 3.3 V
        External Clock: Unknown
        Max Speed: 30000 MHz
        Current Speed: 2600 MHz
        Status: Populated, Disabled By BIOS
        Upgrade: ZIF Socket
        L1 Cache Handle: 0x0112
        L2 Cache Handle: 0x0192
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified
        Core Count: 4
        Core Enabled: 4
        Characteristics:
                64-bit capable
                Multi-Core
                Execute Protection

lspci

lspci是Linux系统中的一个命令,它可以列出计算机中所有PCI设备的信息,包括显示卡、声卡、网卡等等。可以理解为,lspci是一个工具,它帮助我们查看计算机中的硬件设备。

lspci [-vvn]
选项:
-v:显示更多的PCI设备的详细信息
-vv:比-v还要更详细的详细信息
-n:直接查看PCI的ID而不是厂商名称
-s:只显示指定设备的信息

使用案例

去看系统内的PCI相关设备

[root@localhost ~]# lspci 
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
00:10.0 SCSI storage controller: Broadcom / LSI 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 PCI bridge: VMware PCI bridge (rev 02)
00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)
02:00.0 USB controller: VMware USB1.1 UHCI Controller
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:02.0 Multimedia audio controller: Ensoniq ES1371/ES1373 / Creative Labs CT2518 (rev 02)
02:03.0 USB controller: VMware USB2 EHCI Controller

不必加任何参数,就能够显示出目前主机上面的各个PCI设备

如果你要知道以太网的详细信息

[root@localhost ~]# lspci -s 00:03.0 -vv

/usr/share/hwdata/pci.ids

其实那个就是PCI的标准ID与品牌名称的对于表。此外,刚刚我们使用lspci时,其实所有数据都是从 /proc/bus/pci/ 目录中获取的。不过由于硬件发展太过迅速,所以你的 pci.ids 文件可能会落伍,可以使用下面的方式来在线更新你的对应文件

[root@localhost ~]# update-pciids

lsusb

lsusb命令用于列出系统中所有的USB设备信息,包括USB控制器、USB设备及其属性等。具体使用方法如下:

lsusb [-t]
选项:
-t:以树形结构显示设备信息
-s [bus]:[device]:只显示指定总线(bus)和设备(device)的信息,例如 lsusb -s 001:002。
-d [vendor]:[product]:只显示指定供应商(vendor)和产品(product)的信息,例如 lsusb -d 045e:00cb。

使用案例

列出目前主机USB各端口状态

[root@localhost ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc. 
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

iostat

iostat是一个Linux系统性能监控工具,用于显示CPU、磁盘和tty设备的统计信息。

如果没有这个软件就执行如下命令安装它

yum install -y sysstat

iostat [选项] [间隔时间] [次数]
选项:
-c:显示CPU的统计信息
-d:显示磁盘的统计信息
-k:以KB为单位显示统计信息
-m:以MB为单位显示统计信息
-t:显示时间戳

使用案例

显示一下目前整个系统的CPU与存储设备的状态

[root@localhost ~]# iostat 
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain)    2023年05月25日  _x86_64_        (8 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.28    0.00    0.87    0.00    0.00   98.85
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.26        24.06         8.13     545074     184191
scd0              0.00         0.05         0.00       1028          0

输出详解:

1.第一行:显示Linux系统的版本信息、当前日期和时间、CPU的架构和数量。

2.第二行:显示CPU的利用率统计信息,包括以下各列:

%user:表示用户进程占用CPU时间的百分比。

%nice:表示“优先级较高的进程”占用CPU时间的百分比。

%system:表示内核占用CPU时间的百分比。

%iowait:表示CPU等待I/O操作完成的时间占用的百分比。

%steal:表示虚拟机监控程序(如KVM)偷取CPU时间的百分比。

%idle:表示CPU空闲时间的百分比。

3.第三行:显示磁盘I/O统计信息,包括以下各列:

Device:表示磁盘设备的名称。

tps :平均每秒钟的传送次数,与数据传输【次数】有关,非容量

KB_read/s:开机到现在平均的读取单位

KB_wrtn/s:开机到现在平均的写入单位

KB_read:开机到现在,总共读出来的数据

KB_wrtn:开机到现在,总共写入的数据

仅针对sda,每两秒检测一次,并且共检测三次存储设备

[root@localhost ~]# iostat -d 2 3 sda
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain)    2023年05月25日  _x86_64_        (8 CPU)
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.24        23.25         8.07     545074     189201
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.00         0.00        10.75          0         21
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

仔细看看,如果是有检测次数的情况,那么第一次显示的是【从开机到现在的数据】

第二次以后所显示的数据则代表两次检测之间的系统传输值,举例来说,上面的信息中,

第二次显示的数据,则是两秒钟内(本案例)系统的总传输量的平均值

了解磁盘的健康状态

其实Linux服务器最重要的就是【数据安全】,而数据都是放在磁盘当中的,所以,无时无刻了解以下你的磁盘健康状况,应该是个好习惯。我呢提提,你怎么知道你的磁盘是好还是坏?

smartctl是smartmontools软件包中的命令行工具,用于读取和显示磁盘的S.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology)信息。S.M.A.R.T是一种嵌入在计算机硬件中的技术,可以在磁盘上记录各种故障预测和错误信息,从而提前预测磁盘故障并采取相应措施。

smartctl命令的基本语法如下:

smartctl [options] device

其中,device参数指定要显示S.M.A.R.T信息的磁盘设备,可以是设备文件名(如/dev/sda)、磁盘代号(如sda)或磁盘路径(如/sys/block/sda)。
下面是一些常用的选项和参数:

除了以上常用选项,smartctl命令还支持许多其他选项,可以使用“man smartctl”命令查看完整的手册。

使用案例

用smartctl 显示完整的 /dev/sda 的信息

[root@localhost ~]# smartctl -a /dev/sdb 
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Vendor:               VMware,
Product:              VMware Virtual S
Revision:             1.0
User Capacity:        21,474,836,480 bytes [21.4 GB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Device type:          disk
Local Time is:        Thu May 25 16:08:23 2023 CST
SMART support is:     Unavailable - device lacks SMART capability.
=== START OF READ SMART DATA SECTION ===
Current Drive Temperature:     0 C
Drive Trip Temperature:        0 C
Error Counter logging not supported
Device does not support Self Test logging

查看磁盘的健康状态

[root@localhost ~]# smartctl -H /dev/sdb 
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK

到此这篇关于Linux 服务器硬件数据的收集的文章就介绍到这了,更多相关Linux 服务器硬件数据的收集内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文