知道Linux系统在什么样的硬件部件上运行始终是个好的做法,这可以帮助你在系统上安装程序包和驱动程序时,处理兼容问题。

图1:Linux下检查硬件和系统信息的10个命令
因此在这篇技巧文章中,我们将介绍几个实用命令,它们可以帮助你获取关于Linux系统和硬件部件的信息。
1.如何查看Linux系统的信息
如果仅仅想知道系统名称,你可以使用不带任何参数选项符的uname命令(会输出系统信息),或者使用uname -s命令(输出系统的内核名称)。
tecmint@tecmint~$uname
Linux
想查看网络主机名称,使用带“-n”参数选项符的uname命令,如下所示。
tecmint@tecmint~$uname-n
tecmint.com
想获得关于内核版本的信息,使用“-v”参数选项符。
tecmint@tecmint~$uname-v
#64-UbuntuSMPMonSep2221:28:38UTC2014
想获得关于内核发行版的信息,使用“-r”参数选项符。
tecmint@tecmint~$uname-r
3.13.0-37-generic
想输出你系统的硬件名称,使用“-m”参数选项符:
tecmint@tecmint~$uname-m
x86_64
只要运行“uname -a”命令,所有这些信息可以一下子输出,所下所示。
tecmint@tecmint~$uname-a
Linuxtecmint.com3.13.0-37-generic#64-UbuntuSMPMon
Sep2221:28:38UTC2014x86_64x86_64x86_64GNU/Linux
2.如何查看Linux系统的硬件信息
你在这里可以使用lshw工具,收集关于硬件部件(比如处理器、磁盘、内存和USB控制器等)的大量信息。
lshw是一个比较小巧的工具,你在获取信息时,没有几个选项需要结合使用。lshw提供的信息从不同的/proc文件收集而来。
请注意:务必要记住一点,lshw命令只能由超级用户(根用户)或sudo用户来执行。
想输出关于你Linux系统硬件的信息,运行这个命令。
tecmint@tecmint~$sudo lshw
tecmint.com
description:Notebook
product:20354(LENOVO_MT_20354_BU_idea_FM_LenovoZ50-70)
vendor:LENOVO
version:LenovoZ50-70
serial:1037407803441
width:64bits
capabilities:smbios-2.7dmi-2.7vsyscall32
configuration:administrator_password=disabledboot=normalchassis=notebookfamily=IDEAPADfrontpanel_password=disabledkeyboard_password=disabledpower-on_password=disabledsku=LENOVO_MT_20354_BU_idea_FM_LenovoZ50-70uuid=E4B1D229-D237-E411-9F6E-28D244EBBD98
*-core
description:Motherboard
product:Lancer5A5
vendor:LENOVO
physicalid:0
version:31900059WIN
serial:YB06377069
slot:Type2-BoardChassisLocation
*-firmware
description:BIOS
vendor:LENOVO
physicalid:0
version:9BCN26WW
date:07/31/2014
size:128KiB
capacity:4032KiB
capabilities:pciupgradeshadowingcdbootbootselecteddint13floppynecint13floppytoshibaint13floppy360int13floppy1200int13floppy720int13floppy2880int9keyboardint10videoacpiusbbiosbootspecificationuefi
......
如果使用-short选项,可以输出硬件信息的摘要。
tecmint@tecmint~$sudo lshw -short
H/WpathDeviceClassDescription
=====================================================
system20354(LENOVO_MT_20354_BU_idea_FM_LenovoZ50-70)
/0busLancer5A5
/0/0memory128KiBBIOS
/0/4processorIntel(R)Core(TM)i5-4210UCPU@1.70GHz
/0/4/bmemory32KiBL1cache
/0/4/cmemory256KiBL2cache
/0/4/dmemory3MiBL3cache
/0/amemory32KiBL1cache
/0/12memory8GiBSystemMemory
/0/12/0memoryDIMM[empty]
/0/12/1memoryDIMM[empty]
/0/12/2memory8GiBSODIMMDDR3Synchronous1600MHz(0.6ns)
/0/12/3memoryDIMM[empty]
/0/100bridgeHaswell-ULTDRAMController
/0/100/2displayHaswell-ULTIntegratedGraphicsController
/0/100/3multimediaHaswell-ULTHDAudioController
...
如果你想将输出生成为一个html文件,可以使用选项-html。
tecmint@tecmint~$sudolshw-html>lshw.html

图2:生成HTML格式的Linux硬件信息
Linux下收集系统和硬件信息的10个实用命令(1)_linux查看硬件信息
3.如何查看Linux处理器的信息
想查看关于处理器的信息,可使用lscpu命令,因为它显示了来自sysfs和/proc/cpuinfo的关于处理器架构的信息,比如处理器数量、核心、处理器系列型号、处理器缓存和线程等。
tecmint@tecmint~$lscpu
Architecture:x86_64
CPUop-mode(s):32-bit,64-bit
ByteOrder:LittleEndian
CPU(s):4
On-lineCPU(s)list:0-3
Thread(s)percore:2
Core(s)persocket:2
Socket(s):1
NUMAnode(s):1
VendorID:GenuineIntel
CPUfamily:6
Model:69
Stepping:1
CPUMHz:768.000
BogoMIPS:4788.72
Virtualization:VT-x
L1dcache:32K
L1icache:32K
L2cache:256K
L3cache:3072K
NUMAnode0CPU(s):0-3
4.如何收集Linux块设备的信息
块设备是硬盘和闪驱等之类的存储设备。lsblk命令可以用来报告关于块设备的信息,如下所示。
tecmint@tecmint~$lsblk
NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT
sda8:00931.5G0disk
├─sda18:101000M0part
├─sda28:20260M0part/boot/efi
├─sda38:301000M0part
├─sda48:40128M0part
├─sda58:50557.1G0part
├─sda68:6025G0part
├─sda78:7014.7G0part
├─sda88:801M0part
├─sda98:90324.5G0part/
└─sda108:1007.9G0part[SWAP]
sr011:011024M0rom
如果你想查看系统上的所有块设备,那么加上-a选项。
tecmint@tecmint~$lsblk -a
NAMEMAJ:MINRMSIZEROTYPEMOUNTPOINT
sda8:00931.5G0disk
├─sda18:101000M0part
├─sda28:20260M0part/boot/efi
├─sda38:301000M0part
├─sda48:40128M0part
├─sda58:50557.1G0part
├─sda68:6025G0part
├─sda78:7014.7G0part
├─sda88:801M0part
├─sda98:90324.5G0part/
└─sda108:1007.9G0part[SWAP]
sdb8:1610disk
sr011:011024M0rom
ram01:0064M0disk
ram11:1064M0disk
ram21:2064M0disk
ram31:3064M0disk
ram41:4064M0disk
ram51:5064M0disk
ram61:6064M0disk
ram71:7064M0disk
ram81:8064M0disk
ram91:9064M0disk
loop07:000loop
loop17:100loop
loop27:200loop
loop37:300loop
loop47:400loop
loop57:500loop
loop67:600loop
loop77:700loop
ram101:10064M0disk
ram111:11064M0disk
ram121:12064M0disk
ram131:13064M0disk
ram141:14064M0disk
ram151:15064M0disk
5.如何输出USB控制器的信息
lsusb命令可用于报告关于USB控制器及与之相连的所有设备的信息。
tecmint@tecmint~$lsusb
Bus001Device002:ID8087:8000IntelCorp.
Bus001Device001:ID1d6b:0002LinuxFoundation2.0roothub
Bus003Device001:ID1d6b:0003LinuxFoundation3.0roothub
Bus002Device005:ID0bda:b728RealtekSemiconductorCorp.
Bus002Device004:ID5986:0249Acer,Inc
Bus002Device003:ID0bda:0129RealtekSemiconductorCorp.RTS5129CardReaderController
Bus002Device002:ID045e:00cbMicrosoftCorp.BasicOpticalMousev2.0
Bus002Device001:ID1d6b:0002LinuxFoundation2.0roothub
你可以使用-v选项,生成关于每个USB设备的详细信息。
tecmint@tecmint~$lsusb -v
6.如何输出PCI设备的信息
PCI设备可能包括USB端口、显卡和网络适配器等。lspci工具用来生成关于你系统上所有PCI控制器以及与之相连的设备的信息。
想输出关于PCI设备的信息,可运行下面这个命令。
tecmint@tecmint~$lspci
00:00.0Hostbridge:IntelCorporationHaswell-ULTDRAMController(rev0b)
00:02.0VGAcompatiblecontroller:IntelCorporationHaswell-ULTIntegratedGraphicsController(rev0b)
00:03.0Audiodevice:IntelCorporationHaswell-ULTHDAudioController(rev0b)
00:14.0USBcontroller:IntelCorporationLynxPoint-LPUSBxHCIHC(rev04)
00:16.0Communicationcontroller:IntelCorporationLynxPoint-LPHECI#0(rev04)
00:1b.0Audiodevice:IntelCorporationLynxPoint-LPHDAudioController(rev04)
00:1c.0PCIbridge:IntelCorporationLynxPoint-LPPCIExpressRootPort3(reve4)
00:1c.3PCIbridge:IntelCorporationLynxPoint-LPPCIExpressRootPort4(reve4)
00:1c.4PCIbridge:IntelCorporationLynxPoint-LPPCIExpressRootPort5(reve4)
00:1d.0USBcontroller:IntelCorporationLynxPoint-LPUSBEHCI#1(rev04)
00:1f.0ISAbridge:IntelCorporationLynxPoint-LPLPCController(rev04)
00:1f.2SATAcontroller:IntelCorporationLynxPoint-LPSATAController1[AHCImode](rev04)
00:1f.3SMBus:IntelCorporationLynxPoint-LPSMBusController(rev04)
01:00.0Ethernetcontroller:RealtekSemiconductorCo.,Ltd.RTL8111/8168/8411PCIExpressGigabitEthernetController(rev10)
02:00.0Networkcontroller:RealtekSemiconductorCo.,Ltd.RTL8723BEPCIeWirelessNetworkAdapter
03:00.03Dcontroller:NVIDIACorporationGM108M[GeForce840M](reva2)
使用-t选项,生成树状格式的输出。
tecmint@tecmint~$lspci -t
-[0000:00]-+-00.0
+-02.0
+-03.0
+-14.0
+-16.0
+-1b.0
+-1c.0-[01]----00.0
+-1c.3-[02]----00.0
+-1c.4-[03]----00.0
+-1d.0
+-1f.0
+-1f.2
\-1f.3
使用-v选项,生成关于每个所连接设备的详细信息。
tecmint@tecmint~$lspci -v
00:00.0Hostbridge:IntelCorporationHaswell-ULTDRAMController(rev0b)
Subsystem:LenovoDevice3978
Flags:busmaster,fastdevsel,latency0
Capabilities:
00:02.0VGAcompatiblecontroller:IntelCorporationHaswell-ULTIntegratedGraphicsController(rev0b)(prog-if00[VGAcontroller])
Subsystem:LenovoDevice380d
Flags:busmaster,fastdevsel,latency0,IRQ62
Memoryatc3000000(64-bit,non-prefetchable)[size=4M]
Memoryatd0000000(64-bit,prefetchable)[size=256M]
I/Oportsat6000[size=64]
ExpansionROMat[disabled]
Capabilities:
Kerneldriverinuse:i915
.....
Linux下收集系统和硬件信息的10个实用命令(1)_linux查看硬件信息
7.如何输出SCSI设备的信息
想查看你的所有SCSI/SATA设备,使用lsscsi命令,如下所示。如果你没有安装lsscsi工具,运行下面这个命令即可安装它。
$sudo apt-get install lsscsi[onDebianderivatives]
#yum install lsscsi[OnRedHatbasedsystems]
#dnf install lsscsi[OnFedora21+Onwards]
安装完毕后,运行lsscsi命令,如下所示:
tecmint@tecmint~$lsscsi
[0:0:0:0]diskATAST1000LM024HN-M2BA3/dev/sda
[1:0:0:0]cd/dvdPLDSDVD-RWDA8A5SHRL61/dev/sr0
[4:0:0:0]diskGeneric-xD/SD/M.S.1.00/dev/sdb
使用-s选项,显示设备的大小。
tecmint@tecmint~$lsscsi -s
[0:0:0:0]diskATAST1000LM024HN-M2BA3/dev/sda1.00TB
[1:0:0:0]cd/dvdPLDSDVD-RWDA8A5SHRL61/dev/sr0-
[4:0:0:0]diskGeneric-xD/SD/M.S.1.00/dev/sdb-
8.如何输出关于SATA设备的信息
你可以使用hdparm实用工具,找到关于系统上SATA设备的一些信息,如下所示。在下面这个例子中,我使用了实为系统上硬盘的块设备/dev/sda1。
tecmint@tecmint~$sudo hdparm /dev/sda1
/dev/sda1:
multcount=0(off)
IO_support=1(32-bit)
readonly=0(off)
readahead=256(on)
geometry=56065/255/63,sectors=2048000,start=2048
想输出关于设备结构在柱面、磁头、扇区、大小和起始偏移量等方面的信息,使用-g选项。
tecmint@tecmint~$sudo hdparm -g/dev/sda1
/dev/sda1:
geometry=56065/255/63,sectors=2048000,start=2048
9.如何输出Linux文件系统的信息
想收集关于文件系统分区的信息,可以使用fdisk命令。虽然fdisk命令的主要功能是改动文件系统分区,但是它也可以用来查看关于文件系统上不同分区的信息。
你可以输出分区信息,如下所示。记得以超级用户的身份运行该命令,否则你看不到任何输出。
tecmint@tecmint~$sudo fdisk -l
WARNING:GPT(GUIDPartitionTable)detectedon'/dev/sda'!Theutilfdiskdoesn'tsupportGPT.UseGNUParted.
Disk/dev/sda:1000.2GB,1000204886016bytes
255heads,63sectors/track,121601cylinders,total1953525168sectors
Units=sectorsof1*512=512bytes
Sectorsize(logical/physical):512bytes/4096bytes
I/Osize(minimum/optimal):4096bytes/4096bytes
Diskidentifier:0xcee8ad92
DeviceBootStartEndBlocksIdSystem
/dev/sda111953525167976762583+eeGPT
Partition1doesnotstartonphysicalsectorboundary.
10.如何获取关于硬件部件的信息
你还可以使用dmidecode实用工具来获取硬件信息,只要从DMI表读取数据。
想输出关于内存的信息,以超级用户的身份运行该命令。
tecmint@tecmint~$sudo dmidecode-t memory
#dmidecode2.12
#SMBIOSentrypointat0xaaebef98
SMBIOS2.7present.
Handle0x0005,DMItype5,24bytes
MemoryControllerInformation
ErrorDetectingMethod:None
ErrorCorrectingCapabilities:
None
SupportedInterleave:One-wayInterleave
CurrentInterleave:One-wayInterleave
MaximumMemoryModuleSize:8192MB
MaximumTotalMemorySize:32768MB
SupportedSpeeds:
Other
SupportedMemoryTypes:
Other
MemoryModuleVoltage:Unknown
AssociatedMemorySlots:4
0x0006
0x0007
0x0008
0x0009
EnabledErrorCorrectingCapabilities:
None
...
想输出关于系统的信息,运行该命令。
tecmint@tecmint~$sudodmidecode-tsystem
#dmidecode2.12
#SMBIOSentrypointat0xaaebef98
SMBIOS2.7present.
Handle0x0001,DMItype1,27bytes
SystemInformation
Manufacturer:LENOVO
ProductName:20354
Version:LenovoZ50-70
SerialNumber:1037407803441
UUID:29D2B1E4-37D2-11E4-9F6E-28D244EBBD98
Wake-upType:PowerSwitch
SKUNumber:LENOVO_MT_20354_BU_idea_FM_LenovoZ50-70
Family:IDEAPAD
...
想输出关于BIOS的信息,运行该命令。
tecmint@tecmint~$sudodmidecode-tbios
#dmidecode2.12
#SMBIOSentrypointat0xaaebef98
SMBIOS2.7present.
Handle0x0000,DMItype0,24bytes
BIOSInformation
Vendor:LENOVO
Version:9BCN26WW
ReleaseDate:07/31/2014
Address:0xE0000
RuntimeSize:128kB
ROMSize:4096kB
Characteristics:
PCIissupported
BIOSisupgradeable
BIOSshadowingisallowed
BootfromCDissupported
Selectablebootissupported
EDDissupported
JapanesefloppyforNEC98001.2MBissupported(int13h)
JapanesefloppyforToshiba1.2MBissupported(int13h)
5.25"/360kBfloppyservicesaresupported(int13h)
5.25"/1.2MBfloppyservicesaresupported(int13h)
3.5"/720kBfloppyservicesaresupported(int13h)
3.5"/2.88MBfloppyservicesaresupported(int13h)
8042keyboardservicesaresupported(int9h)
CGA/monovideoservicesaresupported(int10h)
ACPIissupported
USBlegacyissupported
BIOSbootspecificationissupported
Targetedcontentdistributionissupported
UEFIissupported
BIOSRevision:0.26
FirmwareRevision:0.26
...
想输出关于处理器的信息,运行该命令。
tecmint@tecmint~$sudodmidecode-tprocessor
#dmidecode2.12
#SMBIOSentrypointat0xaaebef98
SMBIOS2.7present.
Handle0x0004,DMItype4,42bytes
ProcessorInformation
SocketDesignation:U3E1
Type:CentralProcessor
Family:Corei5
Manufacturer:Intel(R)Corporation
ID:51060400FFFBEBBF
Signature:Type0,Family6,Model69,Stepping1
Flags:
...
结束语
你可以使用另外许多方法来获取关于系统硬件部件的信息。这些命令大都使用/proc目录中的文件来获取系统信息。
但愿你觉得本文很实用,如果你想添加更多的信息,或者在使用上述命令中遇到了什么困难,欢迎留言交流。
原文标题:10 Useful Commands to Collect System and Hardware Information in Linux,作者:Aaron Kili