Linux 查看硬件信息常用命令详解:从入门到精通

在 Linux 系统管理、性能调优、故障排查或硬件兼容性检查中,深入了解服务器或工作站的硬件配置是一项基本且关键的技能。与图形化界面的操作系统不同,Linux 主要通过命令行工具来获取这些信息。这些命令强大、高效,并且通常预装在所有发行版中。

无论是系统管理员、开发人员还是技术爱好者,掌握这些命令都能让你对系统了如指掌。本文将系统地介绍一系列最常用、最实用的硬件信息查看命令,包括其用途、最佳实践以及详细的示例,帮助你构建一个完整的硬件排查知识体系。

目录#

  1. 系统信息概览
  2. CPU 处理器信息
  3. 内存信息
  4. 磁盘与存储信息
  5. PCI 设备信息
  6. USB 设备信息
  7. 网络接口信息
  8. 内核与模块信息
  9. 综合信息工具
  10. 总结与最佳实践
  11. 参考引用

系统信息概览#

在深入细节之前,通常我们需要一个快速的系统概览。

uname - 打印系统信息#

这个命令用于显示基本的系统信息,如内核版本、主机名等。

  • 常用选项:

    • -a 或 --all:显示所有信息。
    • -s 或 --kernel-name:显示内核名称(如 Linux)。
    • -r 或 --kernel-release:显示内核发行版本(最重要、最常用)。
    • -m 或 --machine:显示硬件架构(如 x86_64, aarch64)。
  • 示例用法:

    # 显示所有信息
    uname -a
    # 输出:Linux myserver 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
     
    # 仅显示内核版本(常用于软件兼容性检查)
    uname -r
    # 输出:5.15.0-91-generic
     
    # 显示系统架构
    uname -m
    # 输出:x86_64
  • 最佳实践: 在编写脚本或安装软件时,使用 uname -r 和 uname -m 来确保内核模块或软件包与当前系统兼容。

hostnamectl - 查询和更改主机名(Systemd 系统)#

这个命令不仅可以查看主机名,还能显示相关的系统详细信息。

  • 示例用法:

    hostnamectl

    hostnamectl 示例输出 (图示:静态主机名、图标名称、操作系统、内核版本、架构等信息)

  • 最佳实践: 在基于 Systemd 的现代发行版(如 Ubuntu, CentOS, Fedora)中,这是获取系统标识信息的首选命令。


CPU 处理器信息#

lscpu - 显示 CPU 架构信息#

这是获取 CPU 信息最直观、最常用的命令。它从 /proc/cpuinfo 文件中提取并格式化信息。

  • 示例用法:

    lscpu

    lscpu 示例输出 (图示:架构、CPU 核心数、线程数、型号名称、缓存大小等)

  • 输出解读:

    • Architecture: 架构 (x86_64)
    • CPU(s): 逻辑 CPU 总数(核心数 x 线程数)
    • Thread(s) per core: 每个核心的线程数(判断是否支持超线程)
    • Core(s) per socket: 每个物理 CPU 的核心数
    • Socket(s): 物理 CPU 插槽数(即有几个物理 CPU)
    • Model name: CPU 型号
  • 最佳实践: 快速判断服务器是单路、双路,以及 CPU 的核心/线程总数,用于资源规划和性能分析。

/proc/cpuinfo - 查看每个 CPU 核心的详细信息#

这个虚拟文件包含了每个逻辑 CPU 的详细数据。

  • 示例用法:
    # 查看所有逻辑CPU的信息
    cat /proc/cpuinfo
     
    # 只查看逻辑CPU的数量
    grep -c 'processor' /proc/cpuinfo
     
    # 查看CPU型号
    grep 'model name' /proc/cpuinfo | head -1

内存信息#

free - 显示内存使用情况#

用于查看物理内存和交换空间的使用情况。

  • 常用选项:

    • -h:以人类可读的格式显示(如 GiB, MiB)。
    • -s :以秒为间隔持续监控。
    • -t:显示总计行。
  • 示例用法:

    free -h

    free -h 示例输出 (图示:总内存、已用内存、空闲内存、缓存/缓冲区内存、交换空间)

  • 输出解读(重点):

    • available 列是估算的可用于启动新应用程序的内存,它通常比 free 列的值大,因为会加上缓存/缓冲区中可回收的部分。这是判断内存是否充足的关键指标。
  • 最佳实践: 始终使用 free -h 来快速评估内存压力。关注 available 的值。

dmidecode - 从 DMI 表获取硬件信息(需要 root)#

这是一个非常强大的工具,可以读取主板 BIOS 中的 DMI(Desktop Management Interface)信息,获取硬件的精确数据,如内存条型号、速度、制造商等。

  • 示例用法:

    # 查看物理内存插槽信息(需要root权限)
    sudo dmidecode -t memory
     
    # 查看内存条的详细配置,包括每个插槽的容量、速度、类型
    sudo dmidecode -t 17
     
    # 查看系统信息,如产品名称、序列号
    sudo dmidecode -t system
  • 最佳实践: 用于硬件资产清点、排查内存兼容性问题或确认内存条的具体规格。由于输出信息量大,通常与 grep 结合使用来过滤关键信息。


磁盘与存储信息#

lsblk - 列出块设备信息#

以清晰的树状结构列出所有块设备(如硬盘、分区、RAID、LVM)。

  • 示例用法:

    lsblk

    lsblk 示例输出 (图示:设备名、挂载点、大小、类型等的树状结构)

  • 最佳实践: 这是查看磁盘分区布局和挂载点的首选命令,非常直观。

fdisk - 磁盘分区表操作工具#

主要用于管理分区,但也可以用来查看磁盘信息。

  • 示例用法:
    # 列出所有磁盘的分区表(需要root权限)
    sudo fdisk -l
     
    # 查看指定磁盘(如 /dev/sda)的分区表
    sudo fdisk -l /dev/sda

df - 报告文件系统磁盘空间使用情况#

查看已挂载文件系统的磁盘空间使用量。

  • 常用选项:

    • -h:人类可读格式。
    • -T:显示文件系统类型(如 ext4, xfs)。
  • 示例用法:

    df -hT

    df -hT 示例输出 (图示:文件系统、类型、总大小、已用、可用、使用百分比、挂载点)

  • 最佳实践: 使用 df -hT 监控磁盘空间,防止磁盘写满。在自动化脚本中,可以使用 df -h /path | awk 'NR==2{print $5}' 来提取使用百分比。

hdparm - 获取/设置 SATA/IDE 设备参数#

用于测试磁盘读取速度和显示磁盘信息。

  • 示例用法:
    # 显示 /dev/sda 的基本信息
    sudo hdparm -I /dev/sda | grep -i model
     
    # 测试 /dev/sda 的读取速度(缓存读取)
    sudo hdparm -Tt /dev/sda
    警告: hdparm 的某些选项(如 --security-erase)非常危险,请谨慎使用。

PCI 设备信息#

lspci - 列出所有 PCI 设备#

显示所有连接到 PCI 和 PCIe 总线上的设备,如显卡、网卡、声卡等。

  • 常用选项:

    • -v:详细输出。
    • -vv:更详细的输出。
    • -k:显示处理该设备的内核驱动模块。
    • -t:以树状图显示设备层次。
  • 示例用法:

    # 列出所有PCI设备
    lspci
     
    # 查看显卡信息
    lspci | grep -i vga
     
    # 查看网卡信息及其使用的驱动
    lspci -v | grep -i ethernet -A 10
     
    # 详细查看某个特定设备(例如设备号 01:00.0)
    lspci -v -s 01:00.0
  • 最佳实践: 当需要确认新安装的硬件是否被系统识别,或者排查驱动问题时,lspci -k 是首选。


USB 设备信息#

lsusb - 列出 USB 设备#

显示所有 USB 总线和连接到它们上的设备信息。

  • 常用选项:

    • -v:详细输出。
    • -t:以树状图显示。
  • 示例用法:

    # 列出所有USB设备
    lsusb
     
    # 以树状形式显示
    lsusb -t
     
    # 详细查看
    lsusb -v
  • 最佳实践: 用于确认 U 盘、USB 外设等是否被系统正确识别。


网络接口信息#

ip - 显示/操作路由、网络设备、策略路由和隧道#

这是现代 Linux 中推荐用来替代老旧 ifconfig 命令的工具。

  • 示例用法:

    # 显示所有网络接口信息(IP地址、状态等)
    ip addr show
    # 或简写为
    ip a
     
    # 显示路由表
    ip route show
     
    # 显示网络接口统计信息
    ip -s link
  • 最佳实践: 忘记 ifconfig,使用 ip 命令。它是功能更强大、更持续维护的工具。

ethtool - 查询或控制网络驱动程序和硬件设置#

用于获取网络接口的详细硬件设置和统计信息,如连接速度、双工模式等。

  • 示例用法:

    # 显示 eth0 接口的驱动信息、链路状态、速度等
    sudo ethtool eth0
     
    # 显示 eth0 的统计信息
    sudo ethtool -S eth0
  • 最佳实践: 诊断网络性能问题(如丢包、速度不达标)时,ethtool 是必不可少的工具。


内核与模块信息#

lsmod - 显示已加载的内核模块状态#

显示当前已加载的所有内核模块。

  • 示例用法:
    lsmod

modinfo - 显示内核模块的信息#

显示指定内核模块的详细信息,如文件名、描述、依赖项、参数等。

  • 示例用法:

    # 查看 e1000e 网卡驱动模块的信息
    modinfo e1000e
  • 最佳实践: 在加载一个新驱动或排查模块相关问题时,使用 modinfo 来确认模块的详细信息。


综合信息工具#

lshw - 列出硬件配置(需要 root)#

一个非常全面的硬件信息查看工具,可以生成 HTML 等格式的报告。

  • 示例用法:

    # 显示硬件概要(不需要root,但信息有限)
    lshw -short
     
    # 生成详细的HTML硬件报告(需要root)
    sudo lshw -html > my_hardware_info.html
  • 最佳实践: 当需要一份完整的、可用于归档的硬件清单时,使用 sudo lshw -html。

inxi - 功能强大的系统信息脚本#

这是一个第三方脚本,但功能极其强大,被许多论坛技术支持人员所喜爱。它可能不是默认安装的(可通过包管理器安装,如 sudo apt install inxi)。

  • 示例用法:

    # 显示完整的系统信息(非常详细)
    inxi -Fxz
    # 选项解释:-F(完整输出),-x(扩展细节),-z(隐藏敏感信息如MAC地址)
     
    # 只显示硬件信息(CPU,内存,硬盘等)
    inxi -b
  • 最佳实践: 在线上社区寻求帮助时,直接提供 inxi -Fxz 的输出结果,可以让他人快速全面地了解你的系统环境。


总结与最佳实践#

硬件类别首选命令备用命令主要用途
系统概览hostnamectluname -a快速了解系统版本和主机信息
CPUlscpucat /proc/cpuinfo查看架构、核心数、型号
内存free -hcat /proc/meminfo查看使用情况
内存(硬件)sudo dmidecode -t memory-查看物理内存条规格
磁盘(布局)lsblksudo fdisk -l查看分区和挂载点
磁盘(空间)df -hT-查看磁盘空间使用率
PCI 设备lspci -k-查看显卡、网卡等PCI设备及驱动
USB 设备lsusb-查看USB外设
网络接口ip a-查看IP地址和接口状态
网络(硬件)sudo ethtool -诊断网卡速度和状态
内核模块lsmod, modinfo-查看已加载模块和模块详情
综合报告sudo lshw -html, inxi -Fxz-生成完整硬件清单,用于归档或求助

通用最佳实践:

  1. 权限: 涉及底层硬件的命令(如 dmidecode, fdisk -l, ethtool)通常需要 sudo 权限。
  2. 人类可读: 多数命令支持 -h 选项,让输出更易读。
  3. 组合使用: 使用管道 | 和 grep 来过滤命令输出,快速找到关键信息。
  4. 善用手册: 遇到不熟悉的命令,使用 man (如 man lscpu)查看详细文档。

参考引用#

  1. Linux Man Pages: 对于任何命令,都可以通过 man [command-name] 查看其官方文档。
  2. proc 文件系统文档: https://www.kernel.org/doc/Documentation/filesystems/proc.txt
  3. util-linux 包文档: lscpu, lsblk, fdisk 等命令属于该软件包。
  4. pciutils 包文档: lspci 命令属于该软件包。
  5. usbutils 包文档: lsusb 命令属于该软件包。