当你在桌面或服务器上运行 Linux 时,有时你需要识别系统中的硬件。用于此目的的一个命令是 lspci
。它的工作原理是显示连接到 PCI 总线的所有设备。它由 pciutils 软件包提供,适用于各种 Linux 和基于 BSD 的操作系统。
基本用法
当普通用户运行 lspci
时,显示的信息可能因访问权限而受到限制。使用 sudo
运行该命令可提供完整的画面。
单独运行 lspci
会列出 PCI 总线及其连接的设备。这是来自我的媒体中心 PC 的一个示例。它是一个基于 AMD Phenom CPU 的系统,因此它具有 AMD 芯片组。它还具有 Atheros 无线控制器和 Nvidia 显卡。所有硬件设备都列出了详细信息,例如供应商、名称和型号
$ sudo lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge
00: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 Controller
00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00: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 Controller
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
01: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 VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
$ sudo lspci | grep -e 3D
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)
上面的 grep
命令在我的媒体中心 PC 上显示了一个 VGA 设备,但没有 3D 设备。
$ sudo lspci | grep -e VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
$ sudo lspci | grep -e 3D
$
按供应商 ID 搜索
还有另一种不需要 grep
的方法。假设我想确定是否还有其他 Nvidia 设备存在。有必要了解更多信息。我使用 -nn
选项来显示供应商和设备 ID 号。在我的媒体中心 PC 上,此选项显示我的 VGA 卡、供应商 ID 和设备 ID
$ sudo lspci -nn | grep -e VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
设备名称后的带有冒号分隔数字的方括号集显示了供应商和设备 ID。输出表明,Nvidia Corporation 制造的设备的供应商 ID 是 10de。
-d
选项显示来自指定供应商、设备或类别 ID 的所有设备。以下是我的系统中的所有 Nvidia 设备(保留 -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: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01: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_intel
Kernel modules: snd_hda_intel
显示了另外两行:正在使用的内核驱动程序 和 内核模块。第二个列出了可用于支持设备的模块。
保持最新
新的设备和供应商不断进入市场。如果你看到设备被列为未知,则你的 PCI 设备 ID 数据库可能已过时。有两种方法可以检查。-Q
选项使用 DNS 查询中央数据库。当然,这需要网络连接。
$ sudo lspci -Q
你还可以通过运行命令 update-pciids
来更新本地 PCI ID 数据库。
$ sudo update-pciids
Downloaded daily snapshot dated 2021-08-22 03:15:01
了解更多关于你的硬件
当然,lspci
只是 Linux 上可用于查询系统上的硬件和软件的众多命令之一。在我的关于 USB 设备的文章中了解更多关于 Linux 上的硬件的信息:使用此 USB ID 存储库识别更多 Linux 上的设备。
评论已关闭。