1. 为什么需要掌握硬件信息查询指令
作为一名Linux系统管理员或开发者,了解服务器和工作站的硬件配置是日常运维的基础技能。上周我接手一台老旧的测试服务器时,就遇到了典型场景:需要确认这台机器是否满足新应用的运行要求,但机箱上没有任何配置标签,前任管理员也没有留下文档记录。
这时候,Linux内置的各种硬件信息查询工具就成了救命稻草。与Windows系统不同,Linux提供了大量命令行工具,能够获取从CPU型号到内存插槽细节的完整硬件信息。这些工具大多无需安装额外软件,直接内置在主流发行版中。
掌握这些指令的实际价值体现在多个场景:
- 新机器验收时快速核对配置是否与采购单一致
- 排查性能瓶颈时确认硬件资源使用情况
- 安装驱动或软件前检查系统兼容性
- 二手设备交易时生成详细的硬件报告
- 自动化运维脚本中采集资产信息
提示:生产环境中建议通过SSH远程执行这些命令,避免频繁登录机房操作物理设备。大部分查询命令不需要root权限,但部分深度信息需要sudo提升权限。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CPU与处理器信息查询
2.1 查看CPU型号与核心数
最常用的命令是lscpu,它会以结构化的方式显示处理器架构信息:
bash复制$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
CPU MHz: 899.944
...
关键字段解读:
CPU(s):逻辑处理器总数(包含超线程)Core(s) per socket:每个物理CPU的核心数Model name:具体的CPU型号信息
如果想快速获取精简信息,可以使用:
bash复制$ cat /proc/cpuinfo | grep "model name" | uniq
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
2.2 检查CPU使用率与温度
实时监控CPU状态可以使用mpstat工具(需安装sysstat包):
bash复制$ sudo apt install sysstat # Debian/Ubuntu
$ sudo yum install sysstat # RHEL/CentOS
$ mpstat -P ALL 2 # 每2秒刷新所有CPU核心的使用率
对于CPU温度监测(需硬件支持):
bash复制$ sensors # 需要安装lm-sensors包
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +45.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +42.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +44.0°C (high = +100.0°C, crit = +100.0°C)
3. 内存与主板信息获取
3.1 查看内存总量和使用情况
free命令是最直接的内存查看工具:
bash复制$ free -h
total used free shared buff/cache available
Mem: 15Gi 4.2Gi 8.3Gi 456Mi 2.8Gi 10Gi
Swap: 2.0Gi 0.0Ki 2.0Gi
参数说明:
-h:人类可读格式(自动转换为GB/MB)available:实际可用的内存(比free更准确)buff/cache:被缓冲和缓存占用的内存(这部分在应用需要时会被释放)
要查看更详细的内存配置,包括插槽信息:
bash复制$ sudo dmidecode -t memory
# 输出示例
Handle 0x1000, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Maximum Capacity: 32 GB
Number Of Devices: 2
Handle 0x1100, DMI type 17, 40 bytes
Memory Device
Size: 8192 MB
Manufacturer: Kingston
Part Number: KHX3200C16D4/8GX
...
3.2 主板与BIOS信息
dmidecode命令可以获取主板详细信息(需要root权限):
bash复制$ sudo dmidecode -t baseboard
# 输出示例
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: ASUSTeK COMPUTER INC.
Product Name: PRIME B450-PLUS
Version: Rev X.0x
Serial Number: 170565792700828
...
查看BIOS信息:
bash复制$ sudo dmidecode -t bios
# 输出示例
Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 2407
Release Date: 07/02/2019
...
4. 存储设备信息查询
4.1 磁盘列表与分区信息
lsblk命令以树状结构显示块设备:
bash复制$ lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL
NAME SIZE FSTYPE MOUNTPOINT LABEL
sda 477G
├─sda1 512M vfat /boot/efi ESP
├─sda2 488M ext4 /boot
└─sda3 476G ext4 /
nvme0n1 1.8T
├─nvme0n1p1 100M
└─nvme0n1p2 1.8T ext4 /data
更详细的磁盘信息可以使用fdisk:
bash复制$ sudo fdisk -l
Disk /dev/nvme0n1: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Samsung SSD 970 EVO Plus 2TB
...
4.2 检查磁盘健康状态
对于SSD/NVMe设备:
bash复制$ sudo nvme smart-log /dev/nvme0
# 输出关键健康指标
critical_warning : 0
temperature : 34 C
available_spare : 100%
available_spare_threshold : 10%
percentage_used : 3%
data_units_read : 5,123,456
data_units_written : 8,456,789
对于传统机械硬盘(需安装smartmontools):
bash复制$ sudo smartctl -a /dev/sda
SMART overall-health self-assessment test result: PASSED
# 详细SMART属性列表
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 016 Pre-fail Always - 0
3 Spin_Up_Time 0x0007 100 100 016 Pre-fail Always - 0
...
5. 显卡与PCI设备信息
5.1 显卡型号与驱动信息
对于NVIDIA显卡:
bash复制$ nvidia-smi # 需要安装NVIDIA驱动
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| 30% 45C P8 10W / 180W | 456MiB / 8119MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
对于集成显卡或AMD显卡:
bash复制$ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
5.2 查看所有PCI设备
lspci命令列出所有PCI总线设备:
bash复制$ lspci -nnk
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:591f] (rev 05)
Subsystem: ASUSTeK Computer Inc. Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [1043:8694]
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 630 [8086:5912] (rev 04)
Subsystem: ASUSTeK Computer Inc. HD Graphics 630 [1043:8694]
Kernel driver in use: i915
...
添加-v或-vv参数可以获取更详细的信息,包括设备使用的驱动模块。
6. 网络设备与USB外设
6.1 网卡信息查询
查看所有网络接口:
bash复制$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:22:33:44:55:66 brd ff:ff:ff:ff:ff:ff
3: wlp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
查看详细的网卡规格:
bash复制$ ethtool enp3s0 # 需要root权限
Settings for enp3s0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
...
6.2 USB设备列表
lsusb命令显示所有USB设备:
bash复制$ lsusb -tv
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
|__ Port 4: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 6: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 6: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
7. 系统综合信息工具
7.1 inxi综合报告
inxi是一个功能强大的系统信息工具(可能需要安装):
bash复制$ sudo apt install inxi # Debian/Ubuntu
$ sudo yum install inxi # RHEL/CentOS
$ inxi -Fxz
System: Host: myserver Kernel: 5.4.0-80-generic x86_64 bits: 64 Desktop: Gnome 3.36.4
Distro: Ubuntu 20.04.2 LTS (Focal Fossa)
Machine: Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
Mobo: ASUSTeK model: PRIME B450-PLUS v: Rev X.0x serial: <superuser required>
UEFI: American Megatrends v: 2407 date: 07/02/2019
CPU: 6-Core: AMD Ryzen 5 3600 type: MT MCP speed: 2200 MHz min/max: 2200/3600 MHz
Graphics: Device-1: NVIDIA GP106 [GeForce GTX 1060 6GB] driver: nvidia v: 470.57.02
Display: x11 server: X.Org 1.20.9 driver: nvidia resolution: 1920x1080~60Hz
Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169
Drives: Local Storage: total: 2.27 TiB used: 1.54 TiB (67.8%)
Info: Processes: 356 Uptime: 5d 3h 25m Memory: 15.55 GiB used: 4.23 GiB (27.2%)
Shell: bash inxi: 3.0.38
7.2 硬件信息汇总脚本
可以创建自定义脚本一键获取关键硬件信息:
bash复制#!/bin/bash
echo "===== 系统概览 ====="
uname -a
echo -e "\n===== CPU信息 ====="
lscpu | grep -E "Model name|CPU\(s\)"
echo -e "\n===== 内存信息 ====="
free -h
echo -e "\n===== 磁盘信息 ====="
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
echo -e "\n===== 网络接口 ====="
ip -br addr show
echo -e "\n===== PCI设备 ====="
lspci | head -10
保存为hwreport.sh后,添加执行权限即可运行:
bash复制chmod +x hwreport.sh
./hwreport.sh
8. 实际应用中的经验技巧
8.1 服务器验收检查清单
在新服务器上架时,我通常会执行以下检查流程:
- 核对物理配置:
bash复制# 记录序列号
sudo dmidecode -s system-serial-number
# 核对CPU
lscpu | grep "Model name"
# 核对内存
sudo dmidecode -t memory | grep -E "Size|Manufacturer"
# 核对磁盘
lsblk -d -o NAME,MODEL,SIZE
- 性能基准测试:
bash复制# CPU压力测试
stress-ng --cpu 4 --timeout 60s
# 磁盘速度测试
sudo hdparm -Tt /dev/sda
# 内存带宽测试
sudo apt install mbw
mbw -n 10 256
8.2 常见问题排查案例
案例1:内存不足报警但free显示充足
现象:监控系统报警内存不足,但free -m显示有大量可用内存。
解决方案:
bash复制# 检查slab内存占用
cat /proc/meminfo | grep Slab
# 查看具体占用进程
sudo slabtop -o
# 清理缓存(生产环境慎用)
echo 3 | sudo tee /proc/sys/vm/drop_caches
案例2:磁盘IO性能下降
排查步骤:
bash复制# 1. 查看IO等待
vmstat 1 5
# 2. 定位高IO进程
sudo iotop -o
# 3. 检查磁盘健康
sudo smartctl -a /dev/sda
# 4. 测试实际速度
sudo hdparm -Tt /dev/sda
8.3 自动化监控方案
对于需要长期监控的服务器,可以配置以下定时任务:
- 创建监控脚本
/usr/local/bin/hwmonitor.sh:
bash复制#!/bin/bash
DATE=$(date +%Y%m%d-%H%M%S)
LOG="/var/log/hwmonitor/$DATE.log"
{
echo "===== CPU温度 ====="
sensors | grep Core
echo -e "\n===== 内存使用 ====="
free -h
echo -e "\n===== 磁盘空间 ====="
df -h
} > $LOG
- 添加cron任务:
bash复制sudo mkdir /var/log/hwmonitor
sudo chmod 777 /var/log/hwmonitor
(crontab -l 2>/dev/null; echo "0 * * * * /usr/local/bin/hwmonitor.sh") | sudo crontab -
这样每小时会生成一次硬件状态快照,便于后续分析趋势。
