在桌面或服务器上运行Linux时,有时需要识别该系统中的硬件。用于此的一个命令是lspci。它通过显示连接到PCI总线的所有设备来工作。它由pciutils软件包提供,可用于多种基于Linux和BSD的操作系统。
基本用法
常规用户运行lspci时显示的信息可能由于访问权限而受到限制。使用sudo运行命令可以提供完整的信息。
单独运行lspci会列出PCI总线及其连接的设备。以下是一个例子,它是一个基于AMD Phenom CPU的系统,所以它有一个AMD芯片组。它还有一个Atheros无线控制器和一个Nvidia图形卡。列出了所有硬件设备的详细信息,如供应商、名称和型号:
$ sudo lspci00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0)00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0)00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1)00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 3c)00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)02:00.0 Network controller: Qualcomm Atheros AR9287 Wireless Network Adapter (PCI-Express) (rev 01)
详细输出
添加-v选项会增加每个设备的详细程度。你可以使用-vv或-vvv来获取更多的设备细节。在此级别,lspci显示各种子系统和内存地址、中断请求(IRQ)号以及所有设备的其他功能。输出非常长。大家可以在自己的系统上试一试。
用grep搜索
有时你想缩小搜索范围。例如,RPM Fusion网站提供了安装Nvidia图形驱动程序的说明。它们从使用grep命令识别图形卡开始。这是我在笔记本电脑上看到的:
$ sudo lspci | grep -e VGA00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)$ sudo lspci | grep -e 3D01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)
上面的grep命令显示media center PC上的一个VGA设备,但没有显示3D设备。
$ sudo lspci | grep -e VGA01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)$ sudo lspci | grep -e 3D$
按供应商ID搜索
还有一种方法不需要grep。假设我想确定是否存在任何其他Nvidia设备。有必要多了解一点。我使用-nn选项显示供应商和设备ID号。此选项显示我的VGA卡、供应商ID和设备ID:
$ sudo lspci -nn | grep -e VGA01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
设备名称后带有冒号分隔数字的括号集显示供应商和设备ID。输出表明英伟达(Nvidia Corporation)生产的设备的供应商ID为10de。
-d选项显示来自指定供应商、设备或类ID的所有设备。这里是我系统中所有英伟达设备(带着-nn选项包括供应商ID):
$ sudo lspci -nn -d 10de:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
从输出中可以看到,除了一个图形卡,还有一个Nvidia音频设备。它们实际上都是同一个Nvidia GeForce GTX 650卡的一部分,但这是一个很好的例子。
内核模块
与PCI硬件设备一起,lspci可以显示使用-k选项加载的内核驱动程序模块。将此选项添加到lspci命令中,以查看有关Nvidia设备的多条信息。
$ sudo lspci -nn -k -d 10de:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)Subsystem: eVga.com. Corp. GK107 [GeForce GTX 650] [3842:2650]Kernel driver in use: nvidiaKernel modules: nvidiafb, nouveau, nvidia_drm, nvidia01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)Subsystem: eVga.com. Corp. GK107 HDMI Audio Controller [3842:2650]Kernel driver in use: snd_hda_intelKernel modules: snd_hda_intel
显示另外两行:正在使用的内核驱动程序和内核模块。第二个列表列出了支持该设备的可用模块。
新设备和供应商不断进入市场。如果你看到一个设备被列为未知,你的PCI设备ID数据库可能已过时。有两种检查方法。-Q选项使用DNS查询中央数据库。当然,这需要网络连接。
$ sudo lspci -Q
还可以通过运行update-pciids命令来更新本地PCI ID数据库。
$ sudo update-pciidsDownloaded daily snapshot dated 2021-08-22 03:15:01




