Grok生成(2025年10月23日23:59:36)
Linux 硬件信息查询手册
目录
1. 工具安装
1.1 安装必要工具包
# Ubuntu/Debian
sudo apt update
sudo apt install lshw pciutils usbutils smartmontools
# CentOS/RHEL
sudo yum install lshw pciutils usbutils smartmontools
2. 核心查询工具
2.1 lshw - 全面硬件信息
用途:列出系统所有硬件设备的详细信息,包括主板、CPU、内存、磁盘、网络卡等。
基本用法:
# 查看完整硬件树
sudo lshw
# 简洁列表格式
sudo lshw -short
分类查询:
# 存储设备(磁盘+控制器)
sudo lshw -class disk -class storage
# 网络设备
sudo lshw -class network
# USB设备
sudo lshw -class usb
2.2 lspci - PCI设备查询
用途:列出所有PCI/PCIe设备(显卡、网卡、RAID控制器等)。
用法:
# 列出所有PCI设备
lspci
# 筛选网卡
lspci | grep -i ethernet
# 筛选RAID控制器
lspci | grep -i raid
2.3 lsusb - USB设备查询
用途:列出所有USB设备及其厂商ID。
用法:
# 列出所有USB设备
lsusb
# 筛选特定设备
lsusb | grep -i storage
2.4 lscpu - CPU信息
用途:显示CPU架构、核心数、频率等详细信息。
用法:
lscpu
2.5 dmidecode - 主板/BIOS信息
用途:查询主板型号、BIOS版本、序列号等(需要root权限)。
用法:
# 主板信息
sudo dmidecode -t baseboard
# BIOS信息
sudo dmidecode -t bios
# 内存信息
sudo dmidecode -t memory
3. 存储设备管理
3.1 lsblk - 块设备查看
用途:显示所有块设备的分区结构和挂载点。
用法:
# 显示设备树
lsblk
# 包含文件系统类型
lsblk -f
3.2 fdisk - 分区表查询
用途:查看磁盘分区表和分区类型。
用法:
# 列出所有磁盘分区
sudo fdisk -l
3.3 smartctl - 磁盘健康状态
用途:监控SSD/HDD的健康状态、温度、错误率。
用法:
# 检查所有磁盘健康状态
sudo smartctl -a /dev/sda
# 快速健康测试
sudo smartctl -t short /dev/sda
# 查看测试结果(30秒后)
sudo smartctl -l selftest /dev/sda
4. 网络设备诊断
4.1 网卡详细信息
# 查看网卡硬件信息
sudo lshw -class network
# 查看网卡驱动和状态
ethtool eth0
4.2 无线网络
# 查看WiFi网卡
iwconfig
# 扫描WiFi热点
sudo iwlist wlan0 scan
5. 硬件故障排查
5.1 系统日志分析
# 最近硬件错误
dmesg | grep -i error | tail -20
# 磁盘相关错误
dmesg | grep -i sd
# 网卡错误
dmesg | grep -i eth
5.2 RAID状态检查
# 软件RAID
cat /proc/mdstat
# 硬件RAID(MegaRAID)
sudo storcli /c0 show
5.3 内存检查
# 查看内存使用
free -h
# 内存错误日志
dmesg | grep -i memory
6. 实际使用案例
案例1:服务器硬件盘点
目标:生成完整的硬件报告用于资产管理。
#!/bin/bash
# hardware_inventory.sh
echo "=== 服务器硬件盘点报告 ===" > hardware_report.txt
echo "生成时间: $(date)" >> hardware_report.txt
# CPU信息
echo "CPU:" >> hardware_report.txt
lscpu | head -15 >> hardware_report.txt
# 内存信息
echo -e "\n内存:" >> hardware_report.txt
sudo dmidecode -t memory | grep -E "Size|Locator" >> hardware_report.txt
# 存储设备
echo -e "\n存储:" >> hardware_report.txt
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT >> hardware_report.txt
# 网卡
echo -e "\n网卡:" >> hardware_report.txt
sudo lshw -class network -short >> hardware_report.txt
echo "报告已生成: hardware_report.txt"
执行:chmod +x hardware_inventory.sh && ./hardware_inventory.sh
案例2:磁盘健康检查
目标:自动检查所有磁盘的健康状态。
#!/bin/bash
# disk_health_check.sh
echo "磁盘健康检查报告"
echo "=================="
for disk in /dev/sd*; do
if [ -b "$disk" ]; then
echo "检查 $disk:"
sudo smartctl -H "$disk" | grep "SMART overall-health"
fi
done
执行:./disk_health_check.sh
案例3:网卡故障诊断
目标:诊断网卡连接问题。
#!/bin/bash
# network_diag.sh
INTERFACE=${1:-eth0}
echo "网卡 $INTERFACE 诊断报告"
echo "======================"
# 硬件信息
echo "1. 硬件状态:"
sudo lshw -class network | grep "$INTERFACE"
# 驱动信息
echo -e "\n2. 驱动信息:"
ethtool "$INTERFACE" | grep -E "Speed|Duplex|Link"
# 错误统计
echo -e "\n3. 错误统计:"
cat /proc/net/dev | grep "$INTERFACE"
# 系统日志
echo -e "\n4. 最近日志:"
dmesg | grep "$INTERFACE" | tail -3
执行:./network_diag.sh eth0
案例4:USB设备识别
目标:识别新插入的USB存储设备。
#!/bin/bash
# usb_detect.sh
echo "当前USB设备:"
lsusb
echo -e "\n新插入的USB存储:"
lsblk | grep -E "sdb|sr0"
7. 快速参考
# ========== 安装工具 ==========
sudo apt install lshw pciutils usbutils smartmontools
# ========== 核心查询 ==========
sudo lshw -short # 硬件列表
lspci # PCI设备
lsusb # USB设备
lscpu # CPU
lsblk # 磁盘分区
# ========== 存储诊断 ==========
sudo fdisk -l # 分区表
sudo smartctl -a /dev/sda # 磁盘健康
# ========== 网络诊断 ==========
sudo lshw -class network # 网卡硬件
ethtool eth0 # 网卡状态
# ========== 故障排查 ==========
dmesg | grep -i error # 硬件错误
cat /proc/mdstat # RAID状态
# ========== 报告生成 ==========
sudo lshw -html > report.html