Linux中查看硬件信息

一、Linux 硬件管理命令

综合硬件信息查看

  • lshw :列出全面的硬件配置(CPU、内存、主板等),用 -short 选项可查看简洁列表

  • dmidecode:从 BIOS 读取硬件详细信息,直接运行可查看所有类别的信息

CPU

  • lscpu:查看 CPU 架构、型号、核心数、线程数等

  • cat /proc/cpuinfo:查看每个 CPU 核心的详细信息

  • top/htop:实时监控 CPU 使用率

内存

  • free -h:查看内存及交换分区的总容量、已用量、空闲量

  • cat /proc/meminfo:查看详细的内存参数

  • vmstat -s:查看内存相关统计信息

磁盘与存储

  • df -h:查看文件系统磁盘空间使用量

  • lsblk:以树形图列出所有块设备(硬盘、分区)

  • fdisk -l:查看磁盘分区表信息

  • du -sh:查看目录或文件的实际磁盘用量

网络

  • lshw -class network:查看网卡硬件信息

  • ifconfigip addr show:显示网卡 IP 配置

  • lspci | grep -i network:从 PCI 设备中筛选网卡信息

外部设备 (USB/PCI)

  • lsusb:列出所有连接的 USB 设备

  • usb-devices:显示更详细的 USB 设备信息

  • lspci:列出所有 PCI 总线设备(显卡、声卡等)

  • lspci -v:查看 PCI 设备的详细信息

  • ls -l /dev/ttyS* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null :查看已识别串口

  • lsusb -v | grep -i "serial" :查看 USB 转串口设备

部分命令需管理员权限,若提示无权限,请在命令前加上 sudo

二、硬件故障分析

硬件故障排查通常遵循一个固定的流程:先通过内核日志 dmesg 捕捉系统报告的通用错误,若日志指向明确(如硬盘报错),再使用对应的专用工具进行深度检查。这里为你整理了一个整体的排查思路和各硬件的诊断方法。

CPU:主要看利用率

  • 基本信息查看 :用 lscpu 快速获取架构、核心数等信息;cat /proc/cpuinfo 则能提供每个核心的详细参数。

  • 压力测试诊断 :系统变慢、卡顿时,用 top/htop 实时监控,按 1 可查看每个核心的使用率。

    • 高负载:确认是哪个进程 (htop) 或系统调用 (perf top) 占用了资源。

    • 低负载但依然卡顿:可能是CPU过热降频,除了监测温度,还能用 cpupower monitor 确认频率是否正确。

内存:关键看错误校验

  • 基本信息查看 :用 free -h 查看内存容量和使用情况。

  • 深度故障诊断

    • memtester :可在系统运行时对内存进行压力测试。例如,测试 1G 内存循环 5 次:memtester 1G 5

    • memtest86+:更专业的独立内存检测工具,需从引导盘或U盘启动,以进行最彻底的检查。

  • 错误解读 :如果在 dmesg 中出现 Machine Check ExceptionEDAC 相关的错误,通常指向内存物理故障。

硬盘:最依赖专用工具

对于磁盘,强烈建议使用 smartctl 工具(通常需先安装 smartmontools 包)。它的核心用法如下:

诊断维度 推荐命令 作用
快速概览 smartctl -i /dev/sda 快速确认硬盘型号、序列号,并验证是否支持SMART技术
完整健康报告 smartctl -a /dev/sda 一次性查看硬盘的详细属性和所有错误日志
关键健康属性 smartctl -H /dev/sda 获取SMART健康状态(PASSED是及格线,FAILED表示硬盘即将死亡)
短期自检 smartctl -t short /dev/sda 快速(约2分钟)自检,用来定位明显故障

关键指标解读 :重点关注 Reallocated_Sector_Ct(重映射扇区计数)、Current_Pending_Sector(当前待映射扇区计数)和 Uncorrectable_Sector_Ct(无法修正的扇区计数)。这三个指标一旦飙升,说明硬盘的物理介质正在老化,建议立即备份数据。

网络:关注连接状态和丢包

  • 基本信息查看 :用 ifconfig -aip addr show 查看所有网卡的状态。

  • 故障诊断思路

    • 无法连接

      1. 检查硬件 :用 lspci | grep -i ethernet 确认网卡是否被系统识别。

      2. 检查线缆:观察网卡接口旁的指示灯是否正常闪烁。

      3. 检查状态 :用 ip link set eth0 up 尝试重新激活网卡。

      4. 查看日志 :用 dmesg -T | grep -i "eth0" 检查是否有驱动报错。

    • 速度慢/丢包

      1. 检查协商速率 :用 ethtool eth0 查看网卡协商速率是否和路由器/交换机匹配。

      2. 检查丢包 :用 netstat -i 查看网卡的RX-ERR/TX-ERR(接收/发送错误)和DROP(丢包)计数。如果这两个数值不为0,说明网络传输质量很差,应检查网线或接口。

      3. 抓包分析 :用 tcpdump -i eth0 -n -c 100 抓取100个数据包进行分析。

高温与风扇:关注温度过热

硬件过热是导致系统不稳定的常见原因,尤其是CPU和GPU。可以使用 sensors 命令(需安装 lm-sensors 包)读取各硬件传感器的温度。

  • 使用 sensors :直接运行 sensors 即可查看CPU、主板、风扇转速等实时数据。

  • 故障迹象

    • 如果dmesg中出现thermal throttle(热节流)或critical temperature reached(达到临界温度),说明硬件因过热而主动降频,性能自然会下降。

    • 如果sensors命令无法执行或输出为空,可能是内核没有加载对应的传感器驱动,或硬件本身不支持。

总结:排查流程

  1. 系统出现问题(死机、卡顿、报错)?

  2. dmesg -T | grep -iE "error|fail" 查看内核日志

    • 结果 :看到某个硬件相关的明确错误 ➡️ 转到步骤5

    • 结果 :没有明确错误或怀疑是性能问题 ➡️ 转到步骤3

  3. 性能诊断与监控

    • CPU使用率爆满? top/htop/perf

    • 内存耗尽? free -h

    • 磁盘I/O瓶颈? iostat -x 1

    • 网络丢包/延迟? netstat -i/ping

  4. 问题定位与解决:根据监控数据,定位到具体进程或服务,更新驱动或软件。

  5. 专项硬件深度检测

    • 硬盘smartctl -a /dev/sdX

    • 内存memtester / memtest86+

    • 网卡ethtool ethX / 检查线缆

三、实时监控硬件的插入和卸载状态,查看日志

在 Linux 中实时监控硬件的插入和卸载,主要依赖 udev 事件和 内核日志。下面列出最常用的两种监控方式。

1. 实时监控:udevadm monitor

这是专门用于监控 udev 事件 的命令,能显示内核(kernel)和 udev 守护进程处理硬件事件的全过程。

bash

复制代码
# 监控所有硬件事件(需 root 权限)
sudo udevadm monitor --property
  • 效果:当你插入或拔出 U 盘、鼠标、硬盘等设备时,终端会立即输出设备的动作(add/remove)、设备路径、型号、序列号等属性。

  • 参数说明

    • --property:显示设备的详细属性(建议加上)。

    • 不加 --property 只显示事件摘要。

  • 示例输出片段(插入 U 盘):

    text

    复制代码
    KERNEL[12345.678] add      /devices/pci0000:00/.../block/sdb (block)
    UDEV  [12345.789] add      /devices/pci0000:00/.../block/sdb (block)

    你可以看到内核检测到新块设备 sdb,随后 udev 为其创建节点。

2. 实时监控内核日志:dmesg -wjournalctl -f

硬件插入/卸载时,内核会打印详细的消息(如设备型号、分配的接口、驱动加载状态等)。推荐使用以下命令实时查看:

bash

复制代码
# 实时显示内核日志(动态跟踪)
sudo dmesg -w

# 或者用 systemd 的 journalctl(更强大)
sudo journalctl -k -f
  • 插入 U 盘时的典型输出(dmesg):

    text

    复制代码
    [  123.456789] usb 1-1: new high-speed USB device number 6 using xhci_hcd
    [  123.600123] usb 1-1: New USB device found, idVendor=1234, idProduct=5678
    [  123.600456] usb 1-1: Product: USB Flash Drive
    [  123.601234] scsi 5:0:0:0: Direct-Access     USB      Flash Drive     1.00 PQ: 0 ANSI: 2
    [  123.602345] sd 5:0:0:0: [sdb] 12345678 512-byte logical blocks: (6.3 GB/5.9 GiB)
    [  123.604567] sdb: sdb1
  • 拔出 U 盘时的典型输出

    text

    复制代码
    [  200.111222] usb 1-1: USB disconnect, device number 6
    [  200.112333] sd 5:0:0:0: [sdb] Synchronizing SCSI cache
    [  200.113444] sd 5:0:0:0: [sdb] Synchronize Cache(10) failed: Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK

3. 查看历史日志

如果硬件已经插拔过,想回顾之前的事件,可以用以下命令:

bash

复制代码
# 查看本次启动后的所有内核硬件相关日志
dmesg -T | grep -E "usb|sd|ata|eth"

# 或者从 systemd 日志中搜索最近 1 小时的记录
sudo journalctl -k --since "1 hour ago" | grep -E "usb|attach|disconnect"

4. 搭配监控技巧

  • 同时监控 udev 事件 + 内核日志 :开两个终端,分别运行 sudo udevadm monitor --propertysudo dmesg -w

  • 只关注某个特定设备类型(如 USB):

    bash

    复制代码
    sudo udevadm monitor --subsystem-match=usb --property
  • 记录日志到文件(用于长时调试):

    bash

    复制代码
    sudo dmesg -w >> /var/log/hotplug.log &

5. 常见问题排查

现象 可能原因 查看什么日志
插入设备后无任何输出 USB 端口损坏/控制器未启用 dmesg 中是否有 usb 相关行,或 lspci 是否识别主机控制器
设备识别后无法使用 缺少驱动或 udev 规则错误 udevadm monitor 看是否有错误动作;journalctl -u systemd-udevd
拔出时系统报错 数据未同步完全 dmesgSynchronize Cache failed 警告通常无害,但频繁出现要检查存储设备

总结 :想实时监控硬件插拔,就用 sudo udevadm monitor 看事件,同时 sudo dmesg -w 看内核日志;排查历史问题用 dmesg -T \| grep

相关推荐
darkdragonking2 小时前
由一次构建 OpenEuler 22.03 dnf源所了解到的
linux·运维·服务器
米高梅狮子2 小时前
Ceph 分布式存储 部署
linux·运维·数据库·分布式·ceph·docker·华为云
WUYOUGYLU2 小时前
云服务器怎么选、怎么用,才不花冤枉钱
运维·服务器
曹牧2 小时前
Nginx 504
运维·nginx
曦夜日长2 小时前
Linux系统篇,开发工具(五):git的基本使用和浅层认识
linux·运维·服务器
Harm灬小海2 小时前
【云计算学习之路】学习Centos7系统-ROOT密码重置方法
linux·运维·服务器·学习·云计算
IT瑞先生2 小时前
企业云服务器选型分析
运维·服务器
weixin_453639592 小时前
Docker Redis 本地能 Ping 通但 6379 端口连不上?排查记录与解决
linux·redis
志栋智能2 小时前
超自动化巡检:保障数字化转型的“底座工程”
运维·自动化