一、查看CPU信息
Linux服务器出现性能瓶颈时,CPU通常是首先需要确认的硬件之一。lscpu可以直接查看处理器架构、核心数、线程数、主频以及虚拟化等信息。
Bashlscpu
常见输出包括:
Architecture: x86_64 CPU(s): 8 On-line CPU(s): 0-7 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 Model name: Intel(R) Core(TM) i5...
其中:
-
CPU(s):逻辑CPU数量 -
Core(s) per socket:每个CPU插槽包含的物理核心数 -
Thread(s) per core:每个物理核心对应的线程数 -
Socket(s):物理CPU数量 -
Model name:处理器具体型号 -
Architecture:CPU架构,例如x86_64、aarch64
如果只想快速知道逻辑CPU数量,可以执行:
Bashnproc
也可以从/proc/cpuinfo读取更加详细的处理器信息:
Bashcat /proc/cpuinfo
查看处理器型号:
Bashgrep "model name" /proc/cpuinfo | head
ARM服务器上通常可以使用:
Bashlscpu | grep -E "Architecture|Model name|CPU(s)"
二、查看内存信息
查看内存容量和当前使用情况,最常用的命令是free。
Bashfree -h
典型结果:
total used free shared buff/cache available Mem: 15Gi 3Gi 2Gi 100Mi 10Gi 11Gi Swap: 2Gi 0Gi 2Gi
-h表示以人类易读的单位显示,例如KB、MB、GB。
需要注意的是,Linux中的free并不等于系统真正可以立即使用的全部内存。判断内存是否紧张时,更应该关注available。
查看物理内存条信息,可以使用:
Bashsudo dmidecode -t memory
只查看内存容量:
Bashsudo dmidecode -t memory | grep -E "Size:|Type:|Speed:"
如果需要确认服务器安装了多少根内存、每根内存的容量、类型和频率,dmidecode会比free提供更多硬件层面的信息。
三、查看硬盘信息
Linux查看硬盘时,需要区分“磁盘空间使用情况”和“物理硬件信息”。
查看磁盘分区及容量:
Bashlsblk
使用易读单位:
Bashlsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
示例:
NAME SIZE TYPE FSTYPE MOUNTPOINTS sda 500G disk ├─sda1 100G part ext4 / └─sda2 400G part ext4 /data
查看磁盘空间使用率:
Bashdf -h
df -h主要用于判断文件系统空间是否不足,而lsblk更适合查看磁盘、分区以及挂载关系。
如果需要查看硬盘型号、序列号等信息,可以使用:
Bashsudo fdisk -l
或者:
Bashsudo lshw -class disk -class storage
对于SATA硬盘、SSD等设备,还可以使用:
Bashsudo smartctl -a /dev/sda
该命令属于smartmontools工具包。如果系统没有安装,可以根据发行版安装对应软件包。
例如Debian/Ubuntu:
Bashsudo apt install smartmontools
RHEL/CentOS/Fedora系列:
Bashsudo dnf install smartmontools
NVMe设备则可以使用:
Bashsudo nvme list
进一步查看某块NVMe设备:
Bashsudo nvme smart-log /dev/nvme0
四、查看主板信息
想了解服务器使用的主板厂商、型号和版本,可以通过dmidecode查询:
Bashsudo dmidecode -t baseboard
常见字段包括:
Manufacturer Product Name Version Serial Number
也可以直接查看系统硬件摘要:
Bashsudo dmidecode -t system
这对于服务器资产登记、硬件故障排查以及确认设备型号都比较实用。
五、查看PCI设备
显卡、网卡、声卡以及部分存储控制器通常会挂载在PCI总线上,可以使用lspci查看:
Bashlspci
例如:
00:02.0 VGA compatible controller: ... 00:14.0 USB controller: ... 01:00.0 Ethernet controller: ...
只查看显卡:
Bashlspci | grep -i -E "vga|3d|display"
查看网卡:
Bashlspci | grep -i ethernet
查看存储控制器:
Bashlspci | grep -i -E "storage|sata|nvme|raid"
如果需要查看设备更详细的信息,可以使用:
Bashlspci -vv
六、查看网卡硬件信息
查看网络接口:
Baship link
如果需要查看网卡对应的硬件型号,可以结合lspci:
Bashlspci | grep -i ethernet
查看网卡驱动、速率和链路状态,ethtool更加实用:
Bashsudo ethtool eth0
现代Linux系统的网卡名称可能不是eth0,例如可能是ens33、enp3s0等。可以先通过:
Baship link
确定接口名称。
查看网卡驱动:
Bashsudo ethtool -i eth0
常见结果包括:
driver: e1000e version: ... firmware-version: ... bus-info: ...
这样可以快速判断网卡当前使用的驱动程序和固件版本。
七、查看显卡信息
查看显卡型号:
Bashlspci | grep -i -E "vga|3d|display"
NVIDIA显卡通常还可以使用:
Bashnvidia-smi
该命令可以查看GPU型号、显存使用量、温度、功耗以及正在使用GPU的进程。
如果安装了lshw,也可以执行:
Bashsudo lshw -C display
对于没有桌面环境的Linux服务器,这些命令尤其适合快速确认GPU是否被系统正确识别。
八、使用lshw查看完整硬件信息
lshw是Linux中非常实用的硬件信息查看工具,可以从CPU、内存、磁盘、网卡到USB设备进行统一查询。
直接执行:
Bashsudo lshw
信息较多时,可以使用简洁模式:
Bashsudo lshw -short
示例:
H/W path Device Class Description ===================================================== /0 system Computer /0/0 memory 16GiB System memory /0/1 processor CPU /0/100 bridge Host bridge /0/100/1 display VGA compatible controller
针对具体硬件类型,可以使用:
Bashsudo lshw -class processor sudo lshw -class memory sudo lshw -class disk sudo lshw -class network sudo lshw -class display
如果希望保存硬件清单,可以将结果导出:
Bashsudo lshw -html > hardware.html
或者:
Bashsudo lshw -json > hardware.json
九、查看USB设备
USB设备可以通过lsusb查看:
Bashlsusb
示例:
Bus 001 Device 002: ID 8087:8000 Intel Corp. Bus 002 Device 003: ID 046d:c52b Logitech, Inc.
查看USB设备详细信息:
Bashsudo lsusb -v
如果只想确认某类设备是否被识别,可以配合grep:
Bashlsusb | grep -i storage
排查USB键盘、鼠标、U盘等设备无法识别的问题时,lsusb非常方便。
十、查看服务器风扇、温度和传感器
部分硬件温度信息可以通过lm-sensors获取。
安装后执行:
Bashsensors
可能看到:
Package id 0: +45.0°C Core 0: +42.0°C Core 1: +43.0°C
Ubuntu/Debian通常可以安装:
Bashsudo apt install lm-sensors
然后执行:
Bashsudo sensors-detect
完成检测后,再运行:
Bashsensors
需要注意,能否读取CPU温度、主板温度和风扇转速取决于硬件、内核驱动以及服务器厂商提供的传感器支持。
十一、查看BIOS与系统固件信息
查看BIOS版本:
Bashsudo dmidecode -t bios
也可以查询系统产品信息:
Bashsudo dmidecode -s system-product-name sudo dmidecode -s system-manufacturer
这些命令适合在服务器升级固件、排查兼容性问题或者进行设备资产盘点时使用。
十二、查看硬件信息的常用命令对比
| 命令 | 主要用途 |
|---|---|
lscpu | 查看CPU架构、核心、线程等信息 |
nproc | 查看逻辑CPU数量 |
free -h | 查看内存使用情况 |
lsblk | 查看磁盘、分区和挂载关系 |
df -h | 查看文件系统空间使用情况 |
fdisk -l | 查看磁盘和分区信息 |
lspci | 查看PCI设备 |
lsusb | 查看USB设备 |
lshw | 查看完整硬件信息 |
dmidecode | 查看主板、内存、BIOS等DMI信息 |
ethtool | 查看网卡速率、驱动和链路信息 |
smartctl | 查看硬盘SMART健康信息 |
nvme | 查看NVMe设备信息 |
sensors | 查看温度、电压、风扇等传感器信息 |
十三、排查硬件问题时如何组合使用
单独使用一个命令通常只能看到硬件的某一方面信息。实际排查服务器问题时,可以根据故障类型组合命令。
CPU性能异常:
Bashlscpu nproc cat /proc/cpuinfo
再结合:
Bashtop
或者:
Bashhtop
判断CPU实际负载。
内存不足:
Bashfree -h sudo dmidecode -t memory
前者查看当前资源使用情况,后者确认实际安装的物理内存。
磁盘空间不足:
Bashdf -h lsblk
如果怀疑硬盘本身存在故障:
Bashsudo smartctl -a /dev/sda
网卡异常:
Baship link lspci | grep -i ethernet sudo ethtool eth0
可以依次确认网卡是否存在、硬件型号以及链路和驱动状态。
GPU无法使用:
Bashlspci | grep -i -E "vga|3d|display" nvidia-smi
前一个命令确认PCI层面是否识别显卡,后一个命令进一步确认NVIDIA驱动和GPU运行状态。
十四、没有安装额外工具时优先使用哪些命令
Linux系统并不一定默认安装lshw、smartctl、ethtool等工具。遇到精简版服务器系统时,可以优先使用系统自带接口:
Bashlscpu free -h lsblk df -h lspci lsusb ip link cat /proc/cpuinfo cat /proc/meminfo
其中/proc和/sys目录也是Linux获取硬件及内核设备信息的重要来源。例如:
Bashcat /proc/meminfo
可以获取更详细的内存统计数据。
查看系统识别的块设备:
Bashls /sys/class/block/
查看网卡设备:
Bashls /sys/class/net/
这些接口特别适合编写Shell脚本,对服务器硬件进行自动化检测。
十五、查看硬件信息时的几个注意事项
首先,df -h和lsblk解决的是不同问题。df关注文件系统空间,lsblk关注块设备结构,两者不能互相替代。
其次,free -h显示的是操作系统层面的内存状态,而dmidecode -t memory更偏向物理内存条信息。如果需要确认服务器究竟安装了几根内存以及每根内存的规格,应优先使用dmidecode。
另外,lspci显示的是PCI设备识别结果,并不代表对应设备驱动一定正常。比如显卡能够出现在lspci中,但驱动没有正确加载,此时仍然无法正常使用GPU。
对于生产服务器,执行dmidecode、smartctl等命令通常需要root权限。使用sudo执行时,应注意账号是否具有相应权限。
掌握lscpu、free、lsblk、lspci、lshw、dmidecode、ethtool等Linux硬件信息查看命令后,可以快速建立从CPU、内存、磁盘到网络设备的完整硬件检查流程。日常运维不必记住所有参数,根据“查看什么硬件、需要什么信息”选择对应命令,通常能够更高效地定位服务器配置和硬件故障。