Linux系统日常硬件故障排查命令大全

2025-11-05 by 昊之云

在 Linux 系统运维中,硬件故障是影响服务稳定性的核心因素。无论是服务器突然宕机、存储 I/O 卡顿,还是网络丢包异常,都需要通过命令行快速定位硬件问题。掌握硬件信息查看与故障排查命令,不仅能缩短故障响应时间,更能提前预判硬件老化风险。本文将从实战角度出发,系统梳理 CPU、内存、磁盘等核心硬件的排查命令,重点拆解高级技巧,帮助运维人员从 “会用命令” 进阶到 “精通诊断”。

一、CPU 信息查看与故障排查

CPU 作为系统运算核心,其性能瓶颈或硬件故障会直接导致服务卡顿。本节不仅介绍基础信息查看命令,更聚焦高负载诊断与故障定位技巧。

1.1 基础命令:快速获取 CPU 硬件信息

  •  lscpu:最直观的 CPU 架构查看工具,输出信息结构化(推荐优先使用)
lscpu  # 显示CPU核心数、线程数、架构、缓存大小等关键信息

\# 关键输出解读:

\# CPU(s):总逻辑CPU数(核心数×线程数)

\# Core(s) per socket:每颗CPU的物理核心数

\# Cache L3:三级缓存大小(影响多任务处理性能)


  • cat /proc/cpuinfo:从内核文件系统读取 CPU 细节(适合脚本解析)
cat /proc/cpuinfo | grep -E "model name|cpu cores|siblings"

\# 筛选关键信息:CPU型号、物理核心数、逻辑线程数

\# 注意:多CPU服务器需结合"siblings"判断超线程是否开启

1.2 高级技巧:CPU 高负载与故障诊断

(1)实时监控 CPU 使用率与瓶颈

  • • top/htop:实时查看 CPU 负载(按P键按 CPU 使用率排序)
    • • 关键指标:%us(用户态 CPU 占比)、%sy(内核态 CPU 占比)、%wa(等待 I/O 的 CPU 占比)
    • • 诊断逻辑:%wa过高→磁盘 I/O 瓶颈;%sy过高→内核线程或系统调用异常
  • • pidstat -u 1:按进程维度监控 CPU 使用率(精准定位高占用进程)
pidstat -u 1  # 每秒输出一次进程CPU使用情况

\# 场景:当top显示CPU负载高时,用此命令定位具体进程(如Java进程、数据库进程)

(2)排查 CPU 硬件故障

  • • 查看 CPU 温度与稳定性:结合sensors命令(需安装 lm-sensors)
sensors | grep "Core"  # 查看各核心温度

\# 预警阈值:一般CPU耐受温度≤85℃,超过90℃需检查散热风扇或硅脂
  • • 内核日志排查 CPU 错误
dmesg | grep -i "cpu error|mce"  # 查找CPU硬件错误(如机器检查异常MCE)

\# 若出现"MCE: Hardware Error",需进一步用mcelog工具分析错误类型(如缓存错误、总线错误)

二、内存信息查看与故障排查

内存泄漏、物理内存不足是 Linux 系统常见问题,本节重点讲解内存硬件信息获取与故障定位方法。

2.1 基础命令:内存使用与硬件信息

  • • free -h:直观显示内存使用情况(-h 参数按人类可读格式输出)
free -h

\# 关键指标解读:

\# Mem: total(总内存)、used(已使用)、available(可用内存,含缓存)

\# 误区:不要仅看used占比,需关注available是否充足(缓存可释放)
  • • dmidecode -t memory:获取物理内存硬件细节(需 root 权限)
dmidecode -t memory | grep -E "Size|Type|Speed|Locator"

\# 关键信息:内存容量、类型(DDR4/DDR5)、频率(如3200 MT/s)、插槽位置

\# 场景:排查内存不兼容问题(如混合插入不同频率内存导致降频)

2.2 高级技巧:内存泄漏与硬件故障排查

(1)定位内存泄漏问题

  • • top/htop:按M键按内存使用率排序,观察进程内存变化
    • • 诊断逻辑:若某进程内存持续增长(无下降趋势),可能存在内存泄漏(如 Java 应用未释放对象、C 程序内存溢出)
  • • vmstat 1:监控内存交换与页错误(判断是否因内存不足导致交换)
vmstat 1

\# 关键指标:

\# si(每秒从交换分区读入内存的大小)、so(每秒写入交换分区的大小)

\# 预警:si/so持续大于0→物理内存不足,需检查内存使用或扩容
  • • pmap -x :查看进程内存段详情(定位内存泄漏具体模块)
pmap -x 12345  # 12345为进程PID

\# 场景:Java进程内存泄漏时,可结合此命令查看堆内存(heap)或共享库占用情况

(2)排查物理内存硬件故障

  • • memtest86+:内存硬件稳定性测试(需重启系统,通过 U 盘或光盘引导)
    • • 适用场景:系统频繁蓝屏、dmesg 日志出现内存错误时,用于检测内存颗粒是否损坏
  • • 内核日志查看内存错误
dmesg | grep -i "memory error|uncorrectable"

\# 若出现"Uncorrectable Memory Error",需更换故障内存插槽或内存条

三、磁盘信息查看与故障排查

磁盘是系统存储核心,其 I/O 性能与健康状态直接影响服务响应速度,本节重点讲解磁盘分区、健康检查与 I/O 瓶颈诊断。

3.1 基础命令:磁盘分区与挂载信息

  • lsblk:查看磁盘与分区结构(直观显示磁盘挂载点)
lsblk  # 输出格式:NAME(设备名)、SIZE(容量)、MOUNTPOINT(挂载点)

\# 场景:快速确认/dev/sda1挂载到/boot,/dev/mapper/cl-home挂载到/home
  • • fdisk -l:查看磁盘分区表类型与详细参数(需 root 权限)
fdisk -l /dev/sda  # 查看/dev/sda磁盘的分区信息

\# 关键信息:Partition Type(分区类型,如Linux LVM)、Start/End(分区起始/结束扇区)
  • • blkid:查看磁盘分区 UUID 与文件系统(用于 /etc/fstab 配置挂载)
blkid /dev/sda2  # 输出UUID和文件系统类型(如ext4、xfs)

3.2 高级技巧:磁盘健康检查与 I/O 瓶颈诊断

(1)磁盘健康状态检测(SMART)

  • • smartctl:读取磁盘 SMART 信息(需安装 smartmontools,仅支持支持 SMART 的磁盘)
\# 1. 检查磁盘是否支持SMART

smartctl -i /dev/sda | grep "SMART support is"

\# 2. 执行磁盘健康检测(短检测约2分钟,长检测约1小时)

smartctl -t short /dev/sda  # 短检测

smartctl -t long /dev/sda   # 长检测

\# 3. 查看检测结果

smartctl -a /dev/sda | grep -E "SMART overall-health|Failed"

\# 关键判断:"SMART overall-health self-assessment test result: PASSED"为正常

\# 若出现"Failed Attributes",需立即备份数据并更换磁盘(如"Current\_Pending\_Sector"非0→坏道)

(2)磁盘 I/O 性能瓶颈排查

  • • iostat -x 1:监控磁盘 I/O 性能(按设备维度输出)
iostat -x 1  # 每秒输出一次磁盘I/O统计

\# 关键指标:

\# %util:磁盘繁忙程度(持续>80%→I/O瓶颈)

\# rMB/s/wMB:每秒读写MB数(结合业务判断是否超过磁盘性能上限)

\# avgqu-sz:平均I/O队列长度(>2→队列拥堵)
  • • iotop:按进程维度监控磁盘 I/O(直观定位高 I/O 进程)
iotop  # 按"o"键仅显示有I/O活动的进程

\# 场景:当iostat显示%util过高时,用此命令定位具体进程(如数据库备份、日志写入进程)
  • • fio:磁盘 I/O 性能压力测试(验证磁盘实际性能是否达标)
\# 测试随机写性能(16线程,块大小4K,测试10秒)

fio -name=randwrite -filename=/tmp/test -direct=1 -rw=randwrite -bs=4k -size=1G -numjobs=16 -runtime=10 -group\_reporting

\# 关键结果:IOPS(每秒I/O操作数)、BW(带宽),用于对比磁盘标称性能(如SSD IOPS应≥1万)

四、网络信息查看与故障排查

网络故障是 Linux 服务不可用的常见原因,本节从接口信息、连接状态、连通性三个维度梳理排查命令。

4.1 基础命令:网络接口与配置信息

  • • ip a:查看网络接口 IP、MAC 地址与状态(替代老旧的 ifconfig)
ip a  # 输出关键信息:

\# inet:IP地址(如192.168.1.100/24)

\# link/ether:MAC地址

\# state:接口状态(UP/DOWN,DOWN需检查网卡硬件或驱动)
  • • ethtool:查看网卡硬件参数与状态(需 root 权限)
ethtool eth0  # 查看eth0网卡信息

\# 关键信息:

\# Speed:网卡速率(如1000Mb/s→千兆)

\# Duplex:双工模式(Full→全双工,Half→半双工,半双工可能导致网络丢包)

\# Link detected:是否检测到网线(no→检查网线或交换机端口)

4.2 高级技巧:网络连接与故障诊断

(1)查看网络连接与端口监听

  • • ss -tunlp:查看 TCP/UDP 端口监听状态(替代 netstat,性能更优)
ss -tunlp | grep 8080  # 查看8080端口的监听进程

\# 输出解读:

\# tcp LISTEN 0  128  :::8080  :::\*  users:(("java",pid=1234,fd=6))

\# 场景:排查端口被占用问题(如启动服务时提示"address already in use")
  • • ss -tan:查看 TCP 连接状态(分析连接数与异常状态)
ss -tan | grep -E "ESTAB|TIME\_WAIT|CLOSE\_WAIT" | wc -l

\# 关键状态解读:

\# ESTAB:已建立连接(正常业务连接)

\# TIME\_WAIT:连接关闭后等待回收(过多可能导致端口耗尽)

\# CLOSE\_WAIT:被动关闭连接未释放(需检查应用是否正确关闭连接)

(2)网络连通性与丢包排查

  • ping + traceroute/mtr:分层测试网络连通性
\# 1. 测试与目标IP的基础连通性

ping -c 10 192.168.1.200  # 发送10个ICMP包,查看丢包率(loss%)

\# 2. 追踪路由路径(定位丢包节点)

mtr 192.168.1.200  # 实时显示路由各节点的丢包率和延迟(比traceroute更直观)

\# 场景:若ping目标丢包,用mtr查看是网关、交换机还是目标服务器的问题
  • • tcpdump:抓取网络数据包(分析异常流量或协议问题)
\# 抓取eth0网卡上80端口的TCP数据包(保存到文件)

tcpdump -i eth0 tcp port 80 -w /tmp/traffic.pcap

\# 后续可用Wireshark打开pcap文件分析(如排查HTTP请求是否正常、是否有恶意流量)

五、PCI/USB 设备信息查看

PCI 设备(如显卡、网卡、RAID 卡)和 USB 设备(如 U 盘、外接硬盘)的识别与故障排查,是硬件运维的重要环节。

5.1 PCI 设备排查(lspci)

  • • 基础查看:列出所有 PCI 设备
lspci  # 输出格式:总线号:设备号.功能号 设备类型(如Ethernet controller)
  • • 高级筛选与详情
\# 1. 查看网卡对应的PCI设备(结合设备类型筛选)

lspci | grep "Ethernet controller"

\# 2. 查看设备详细信息(含驱动模块、中断号)

lspci -vnn -s 02:00.0  # 02:00.0为PCI设备地址(从lspci输出获取)

\# 关键信息:Kernel driver in use(当前使用的驱动模块,如igb、e1000)

\# 场景:排查PCI设备驱动未加载问题(若显示"Kernel driver in use: \<none>",需安装对应驱动)

5.2 USB 设备排查(lsusb)

  • • 基础查看:列出所有 USB 设备
lsusb  # 输出格式:Bus号 Device号 ID 厂商ID:产品ID 设备名称
  • • 高级诊断
\# 1. 查看USB设备详细信息(含供电、速度)

lsusb -v -s 001:005  # 001:005为Bus号:Device号(从lsusb输出获取)

\# 2. 查看USB设备挂载情况(排查外接硬盘未识别问题)

dmesg | grep -i "usb storage|sd"  # 查看USB存储设备的识别日志

\# 场景:若U盘插入后未显示,用此命令判断是USB端口故障还是设备本身问题

六、硬件温度与系统日志综合排查

6.1 硬件温度监控(lm-sensors)

  • • 安装与配置
\# CentOS/RHEL

yum install lm-sensors -y

\# Ubuntu/Debian

apt install lm-sensors -y

\# 检测硬件传感器(首次安装需执行)

sensors-detect  # 按提示选择默认即可(自动识别传感器类型)
  • • 温度查看与预警
sensors  # 输出CPU、主板、硬盘温度

\# 自定义监控脚本(示例:温度超过阈值发送邮件告警)

\#!/bin/bash

TEMP=\$(sensors | grep "Core 0" | awk '{print \$3}' | cut -d'+' -f2 | cut -d'.' -f1)

if \[ \$TEMP -gt 85 ]; then

&#x20; echo "CPU温度过高:\$TEMP℃" | mail -s "硬件温度告警" admin@example.com

fi

6.2 系统日志与硬件故障定位

系统日志是排查硬件故障的 “黑匣子”,核心日志工具包括dmesgjournalctl

  • • dmesg:查看内核环形缓冲区日志(记录硬件初始化、故障信息)
\# 查看最近的硬件相关日志(按时间排序,最新日志在最后)

dmesg -T | grep -i "hardware|error|fail"

\# 关键日志解读:

\# "eth0: link down"→网卡连接断开

\# "sda: error reading sector 12345"→磁盘扇区读取错误(需检查磁盘健康)

\# "USB device not accepting address"→USB设备识别失败(端口或设备故障)
  • • journalctl:查看系统完整日志(含内核与应用日志,支持时间筛选)
\# 查看今天的内核日志(-k:仅显示内核日志,--since:按时间筛选)

journalctl -k --since "today" | grep -i "mce|memory|disk"

\# \</doubaocanvas>
上一篇 下一篇



@河南昊之云信息科技有限公司 2011~2025 豫ICP备11031407号