怎么查看服务器配置信息?Linux/Windows硬件配置查询命令大全

无论是服务器采购验收、性能调优、故障排查,还是容量规划,都离不开一项基础工作——查看服务器配置。只有准确掌握CPU型号、内存容量、硬盘类型、网卡规格等服务器硬件信息,才能判断系统是否满足业务需求、是否存在硬件瓶颈。本文将从原理到实操,系统讲解Linux和Windows下查询各类硬件配置的命令,并提供一键导出脚本,帮助你快速、完整地获取服务器配置信息。
一、为什么需要查看服务器配置信息
在实际运维工作中,查看服务器配置的需求贯穿服务器全生命周期:
- 采购验收:新服务器到货后,需核对实际硬件与采购合同是否一致,包括CPU型号、内存条数量与容量、硬盘规格等。
- 性能调优:排查系统瓶颈时,需了解CPU核心数、内存大小、磁盘IO能力,判断是计算密集型还是IO密集型问题。
- 容量规划:评估业务增长时,需掌握当前硬件余量,判断是否需要扩容。
- 故障诊断:内存ECC报错、硬盘坏道、网卡降速等问题,都需要通过硬件信息命令定位。
- 资产盘点:企业IT资产管理需要定期采集服务器序列号、型号、配置清单。
掌握这些查询命令,不仅能提高运维效率,还能在排查问题时快速定位根因,避免盲目猜测。下面按硬件类别逐一讲解。
二、查看CPU信息(lscpu / cat /proc/cpuinfo)
CPU是服务器的核心部件,查询CPU信息是查看服务器配置的第一步。Linux提供了多种方式获取CPU信息,最常用的是lscpu和读取/proc/cpuinfo。
1. 使用lscpu命令(推荐)
lscpu
lscpu命令从/proc/cpuinfo和sysfs文件系统中采集CPU信息,以结构化表格形式输出,是最直观的查询方式。输出内容包括:
- Architecture:CPU架构(如x86_64、aarch64)。
- Model name:CPU型号,如Intel Xeon Gold 6248。
- CPU(s):逻辑CPU总数(即线程总数)。
- Thread(s) per core:每个核心的线程数,超线程技术下通常为2。
- Core(s) per socket:每个物理CPU的核心数。
- Socket(s):物理CPU插槽数量。
- CPU MHz:当前主频。
- Cache:各级缓存大小。
理解"物理CPU数、每颗CPU核心数、每核线程数"三者关系很重要:逻辑CPU总数 = 物理CPU数 × 每颗核心数 × 每核线程数。例如2颗CPU、每颗8核、超线程(每核2线程),则逻辑CPU为2×8×2=32个。这个公式在评估服务器算力时非常实用。
2. 使用cat /proc/cpuinfo
/proc/cpuinfo是Linux内核虚拟文件系统中的文件,记录了每个逻辑CPU的详细信息。与lscpu不同,它会逐个输出每个逻辑核心的信息,适合需要精确查看某个核心状态的场景。
# 查看CPU型号
grep "model name" /proc/cpuinfo | head -1
# 查看物理CPU数量(插槽数)
grep "physical id" /proc/cpuinfo | sort -u | wc -l
# 查看每个物理CPU的核心数
grep "cpu cores" /proc/cpuinfo | head -1
# 查看逻辑CPU总数
grep -c "processor" /proc/cpuinfo
# 查看是否支持超线程
grep "siblings" /proc/cpuinfo | head -1
其中physical id代表物理CPU编号,用sort -u去重后计数即可得到物理CPU数量。若siblings的值是cpu cores的两倍,说明开启了超线程技术。
3. 查看CPU实时使用率
# 实时查看CPU使用率(按1可显示每个核心)
top
# 更友好的交互式查看(需安装)
htop
# 查看CPU温度(部分硬件支持)
sensors
top命令中按数字1可以展开每个逻辑CPU的使用率,htop则提供彩色直观的界面,适合长时间监控。
三、查看内存信息(free / dmidecode)
内存信息分为"使用情况"和"硬件规格"两个层面。前者关注当前内存占用,后者关注物理内存条的型号、频率、插槽数量。
1. 使用free命令查看内存使用情况
# 以人类可读单位显示内存(GB/MB)
free -h
# 以字节为单位显示
free -b
# 持续刷新(每2秒刷新一次)
free -h -s 2
free -h输出结果中需重点理解几个指标:
- total:物理内存总量。
- used:已使用内存(含缓冲和缓存)。
- free完全空闲的内存,通常数值较小。
- buff/cache:系统用作缓冲和缓存的内存,可被快速回收。
- available:实际可用于新程序的内存,是最关键的参考值。
很多新手看到free很小会误以为内存不足,实际上Linux会尽量利用空闲内存做缓存以提升性能,真正要看的是available这一列。
2. 使用dmidecode查看内存硬件信息
dmidecode命令读取主板DMI(SMBIOS)数据,能获取物理内存条的详细信息,是查看服务器硬件信息的重要工具。需要root权限执行。
# 查看内存硬件详细信息(需root权限)
sudo dmidecode -t memory
# 提取内存条数量和容量
sudo dmidecode -t memory | grep -E "Size|Locator|Speed|Type:"
# 查看内存插槽总数和使用情况
sudo dmidecode -t memory | grep -E "Number Of Devices|Size"
# 查看最大支持内存容量
sudo dmidecode -t memory | grep "Maximum Capacity"
dmidecode -t memory输出包括每个内存插槽的状态:已插内存条会显示Size、Speed、Type、Manufacturer等;空插槽显示"No Module Installed"。通过对比已用插槽数和总插槽数,可判断是否还有扩容空间。这对于规划内存升级非常重要。
3. 查看内存详细使用情况
# 查看内存使用详情
cat /proc/meminfo | head -10
/proc/meminfo提供比free更详细的内存统计,包括SwapTotal(交换分区)、Slab(内核缓存)、Shmem(共享内存)等,适合深度排查内存问题。
四、查看硬盘信息(lsblk / fdisk / smartctl)
硬盘信息包括磁盘设备列表、分区结构、容量使用率、硬件型号和健康状态。不同命令各有侧重。
1. 使用lsblk查看磁盘和分区结构
# 查看所有块设备和分区树形结构
lsblk
# 显示文件系统类型
lsblk -f
# 只显示磁盘设备(不含分区)
lsblk -d -o name,size,rota,type,model
# 判断硬盘是SSD还是机械盘(rota为0表示SSD)
lsblk -d -o name,rota
lsblk以树形结构展示磁盘和分区关系,rota字段(rotational)为1表示机械硬盘,为0表示SSD固态硬盘。这是判断磁盘类型最简单的方法。
2. 使用fdisk查看磁盘分区表
# 查看所有磁盘分区表(需root权限)
sudo fdisk -l
# 查看指定磁盘分区
sudo fdisk -l /dev/sda
fdisk -l输出磁盘的柱面、磁头、扇区等几何信息,以及分区表类型(MBR或GPT)和每个分区的起始扇区、大小、类型。适合在分区操作前确认磁盘布局。
3. 查看磁盘空间使用情况
# 查看各挂载点的磁盘空间使用情况
df -h
# 查看指定目录占用空间
du -sh /var
# 查看各目录占用并按大小排序(前20名)
du -h / --max-depth=1 2>/dev/null | sort -rh | head -20
df -h显示文件系统的总容量、已用、可用空间和挂载点,是日常排查磁盘空间不足的首选。du则用于分析目录级别的空间占用。
4. 使用smartctl查看硬盘健康状态
smartctl(属于smartmontools包)读取硬盘S.M.A.R.T自检数据,能提前发现硬盘故障隐患,是保障数据安全的重要工具。
# 查看硬盘整体健康状态(需root)
sudo smartctl -H /dev/sda
# 查看硬盘详细SMART信息
sudo smartctl -a /dev/sda
# 查看硬盘型号和序列号
sudo smartctl -i /dev/sda
重点关注的SMART属性包括:Reallocated Sector Count(重映射扇区数,非零表示有坏道)、Current_Pending_Sector(待处理扇区)、Offline_Uncorrectable(无法纠正的扇区)。建议在运维巡检中定期执行smartctl -H,及时发现隐患硬盘。
5. 查看硬盘型号和接口
# 查看硬盘型号和缓存(需root)
sudo hdparm -i /dev/sda
# 查看硬盘序列号(用于资产登记)
sudo hdparm -I /dev/sda | grep "Serial Number"
# 测试硬盘读取速度
sudo hdparm -tT /dev/sda
五、查看网卡信息(ip / lspci / ethtool)
网卡信息涉及设备列表、IP地址、链路速率和协商模式。排查网络问题时这三类信息缺一不可。
1. 使用ip命令查看网络接口
# 查看所有网络接口及IP地址
ip addr show
# 简写形式
ip a
# 查看网卡链路状态(UP/DOWN)
ip link show
# 查看路由表
ip route show
ip命令是ifconfig的替代品(现代Linux推荐使用)。输出中state UP表示网卡已启用,state DOWN表示未启用。link/ether后的地址即MAC地址。
2. 使用lspci查看网卡硬件
# 查看所有PCI设备
lspci
# 只查看网络控制器(网卡)
lspci | grep -i ethernet
# 查看网卡详细信息(需root)
sudo lspci -v -s $(lspci | grep -i ethernet | head -1 | awk '{print $1}')
lspci列出主板PCI总线上的设备,可查看网卡芯片型号(如Intel I350、Broadcom BCM5720),这对驱动安装和兼容性判断很有用。
3. 使用ethtool查看网卡速率和协商
# 查看网卡速率、双工模式、链路状态(需root)
sudo ethtool eth0
# 查看网卡统计信息(收发包、错误数)
sudo ethtool -S eth0
# 查看网卡驱动和固件版本
sudo ethtool -i eth0
ethtool输出的Speed字段显示当前协商速率(如1000Mb/s、10000Mb/s),Duplex显示双工模式(Full全双工)。如果千兆网卡只协商到百兆,通常是网线质量问题或交换机端口配置问题,需重点排查。
六、查看主板和整机信息(dmidecode)
dmidecode不仅能查内存,还能查主板、BIOS、机箱等整机信息,是查看服务器硬件信息最全面的命令。
# 查看主板信息(厂商、型号、版本)
sudo dmidecode -t baseboard
# 查看BIOS信息(厂商、版本、发布日期)
sudo dmidecode -t bios
# 查看机箱/系统信息(厂商、产品名、序列号)
sudo dmidecode -t system
# 查看处理器硬件信息(插槽、电压、最高频率)
sudo dmidecode -t processor
# 一次性导出所有硬件信息
sudo dmidecode -t
关键信息说明:
dmidecode -t system中的Serial Number是服务器整机序列号,用于报修和资产登记。dmidecode -t baseboard中的Product Name是主板型号,用于查询兼容的CPU和内存规格。dmidecode -t bios中的BIOS版本用于判断是否需要升级以支持新硬件。
七、查看系统信息(uname / hostnamectl)
除硬件外,系统版本、内核信息也是服务器配置的重要组成部分。
# 查看内核版本和系统架构
uname -a
# 只查看内核版本
uname -r
# 查看系统架构
uname -m
# 查看操作系统发行版信息(推荐)
cat /etc/os-release
# 查看主机名和系统概要(systemd系统)
hostnamectl
# 查看主机名
hostname
# 查看系统运行时间和负载
uptime
# 查看系统启动时间
who -b
hostnamectl是systemd提供的工具,一次性输出主机名、系统类型、发行版、内核版本、架构等概要信息,非常适合快速了解系统基本情况。uptime中的load average三个数值分别代表系统过去1分钟、5分钟、15分钟的平均负载,若持续大于CPU核心数,说明系统负载过高。
八、Windows下查看服务器配置命令
Windows Server环境下,同样可以通过命令行快速查看服务器配置。相比图形界面,命令行方式更适合远程管理和批量采集。
1. 使用systeminfo命令
# 查看完整系统信息
systeminfo
# 只查看特定字段(如系统启动时间)
systeminfo | findstr "系统启动时间"
systeminfo输出操作系统版本、安装日期、启动时间、主板制造商、BIOS版本、内存总量等综合信息,是Windows下最常用的系统信息命令。
2. 使用PowerShell查询硬件
# 查看CPU信息(型号、核心数、逻辑处理器数)
Get-WmiObject Win32_Processor | Select-Object Name,NumberOfCores,NumberOfLogicalProcessors
# 查看内存总量(字节,需换算为GB)
Get-WmiObject Win32_ComputerSystem | Select-Object TotalPhysicalMemory
# 查看内存条详细信息(容量、频率、厂商)
Get-WmiObject Win32_PhysicalMemory | Select-Object Capacity,Speed,Manufacturer,PartNumber
# 查看物理磁盘信息
Get-PhysicalDisk | Select-Object FriendlyName,MediaType,Size,HealthStatus
# 查看逻辑磁盘空间
Get-WmiObject Win32_LogicalDisk | Select-Object DeviceID,Size,FreeSpace
# 查看网卡信息
Get-WmiObject Win32_NetworkAdapter | Where-Object {$_.PhysicalAdapter -eq $true} | Select-Object Name,Speed,MACAddress
# 查看主板信息
Get-WmiObject Win32_BaseBoard | Select-Object Manufacturer,Product,SerialNumber
PowerShell的Get-WmiObject(或新版的Get-CimInstance)通过WMI(Windows管理规范)接口获取硬件信息,功能强大且可脚本化。MediaType字段为SSD或HDD可直接判断磁盘类型。
3. 使用图形工具
- msinfo32:按
Win + R输入msinfo32,可查看系统摘要、硬件资源、组件等完整信息。 - 任务管理器:按
Ctrl + Shift + Esc,在"性能"标签可实时查看CPU、内存、磁盘、网卡的占用情况。 - 设备管理器:按
Win + X选择"设备管理器",可查看所有硬件设备和驱动状态。
九、一键导出服务器配置脚本
在需要批量采集或存档服务器配置时,手动逐条执行命令效率很低。下面提供一个Linux一键导出脚本,将所有关键配置信息汇总输出到文件。
#!/bin/bash
# 服务器配置信息采集脚本
# 用法:sudo bash server_info.sh
OUTPUT="/tmp/server_config_$(hostname)_$(date +%Y%m%d).txt"
echo "========== 服务器配置信息采集报告 ==========" > $OUTPUT
echo "采集时间:$(date)" >> $OUTPUT
echo "主机名:$(hostname)" >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 系统信息 ----------" >> $OUTPUT
uname -a >> $OUTPUT
cat /etc/os-release | grep -E "^NAME|^VERSION" >> $OUTPUT
hostnamectl >> $OUTPUT 2>/dev/null
uptime >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- CPU信息 ----------" >> $OUTPUT
lscpu >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 内存使用情况 ----------" >> $OUTPUT
free -h >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 内存硬件信息 ----------" >> $OUTPUT
dmidecode -t memory | grep -E "Size|Speed|Type:|Manufacturer" >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 磁盘设备 ----------" >> $OUTPUT
lsblk >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 磁盘空间 ----------" >> $OUTPUT
df -h >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 硬盘健康状态 ----------" >> $OUTPUT
for disk in $(lsblk -d -n -o name | grep -E "sd|nvme|vd"); do
echo "[$disk]:" >> $OUTPUT
smartctl -H /dev/$disk 2>/dev/null >> $OUTPUT
done
echo "" >> $OUTPUT
echo "---------- 网络接口 ----------" >> $OUTPUT
ip addr show >> $OUTPUT
echo "" >> $OUTPUT
echo "---------- 主板和整机信息 ----------" >> $OUTPUT
dmidecode -t baseboard | grep -E "Manufacturer|Product|Serial" >> $OUTPUT
dmidecode -t system | grep -E "Manufacturer|Product|Serial|UUID" >> $OUTPUT
dmidecode -t bios | grep -E "Vendor|Version|Release" >> $OUTPUT
echo "" >> $OUTPUT
echo "========== 采集完成 ==========" >> $OUTPUT
echo "配置信息已导出至:$OUTPUT"
cat $OUTPUT
使用方法:将脚本保存为server_info.sh,执行sudo bash server_info.sh即可生成完整配置报告。建议在服务器验收、巡检、交接时运行此脚本,将输出文件归档保存。
十、常用配置查询命令汇总表
为方便查阅,下面将Linux和Windows下常用的配置查询命令整理成对照表。
| 查询内容 | Linux命令 | Windows命令 | 说明 |
|---|---|---|---|
| CPU型号与核心数 | lscpu | Get-WmiObject Win32_Processor | lscpu输出更直观 |
| CPU详细信息 | cat /proc/cpuinfo | wmic cpu get /format:list | 逐核心输出 |
| 内存使用情况 | free -h | systeminfo | 关注available列 |
| 内存条硬件信息 | sudo dmidecode -t memory | Get-WmiObject Win32_PhysicalMemory | 查频率和插槽数 |
| 磁盘分区结构 | lsblk | Get-Partition | 树形展示 |
| 磁盘分区表 | sudo fdisk -l | diskpart | 含几何信息 |
| 磁盘空间 | df -h | Get-PSDrive / wmic logicaldisk | 查挂载点空间 |
| 硬盘健康状态 | sudo smartctl -a /dev/sda | Get-PhysicalDisk | select HealthStatus | S.M.A.R.T检测 |
| 网卡IP地址 | ip addr | ipconfig /all | 含MAC地址 |
| 网卡速率与双工 | sudo ethtool eth0 | Get-WmiObject Win32_NetworkAdapter | 排查协商问题 |
| 主板信息 | sudo dmidecode -t baseboard | Get-WmiObject Win32_BaseBoard | 查型号和序列号 |
| 整机序列号 | sudo dmidecode -t system | wmic bios get serialnumber | 用于报修登记 |
| 系统版本 | cat /etc/os-release | systeminfo | 发行版信息 |
| 内核版本 | uname -r | ver | 内核/版本号 |
| 运行时间与负载 | uptime | systeminfo | findstr "启动时间" | 含负载平均值 |
十一、常见问题与注意事项
| 问题 | 原因与解决办法 |
|---|---|
| free显示的内存比实际小 | 部分内存被内核、显存共享或硬件保留占用,属正常现象。服务器带板载显卡时尤为常见。 |
| dmidecode命令报错或无输出 | 需要root权限,使用sudo执行。虚拟机环境下部分字段可能为空,因为虚拟硬件不提供完整DMI信息。 |
| 看不到RAID阵列中的物理盘 | 硬件RAID下系统只看到逻辑卷,需用RAID卡管理工具(如MegaCli、storcli)查看物理盘状态。 |
| lscpu与dmidecode的CPU数不一致 | lscpu统计逻辑CPU(含超线程),dmidecode统计物理插槽,两者含义不同,并非矛盾。 |
| smartctl提示设备不支持SMART | 部分虚拟磁盘或USB设备不支持SMART,物理服务器本地盘一般都支持。 |
| Windows下WMI命令执行缓慢 | WMI服务响应较慢属正常,可改用更快的Get-CimInstance(PowerShell 3.0+)。 |
| ethtool显示Speed: Unknown | 网卡未连接网线或驱动未正确加载,检查物理链路和驱动状态。 |
总结
查看服务器配置是运维工作的基本功,掌握本文介绍的命令组合,足以覆盖CPU、内存、硬盘、网卡、主板、系统等各方面的服务器硬件信息查询需求。实际工作中建议注意三点:一是区分"使用情况"和"硬件规格"两类信息,用对命令;二是涉及DMI、SMART等底层信息的命令需root权限,注意权限管理;三是养成定期采集配置快照的习惯,便于故障时对比分析。配合文末的一键导出脚本,可以大幅提升配置采集效率。
