在 Linux 上使用 lspci 命令查看硬件情況

當(dāng)你在個(gè)人電腦或服務(wù)器上運(yùn)行 Linux 時(shí),有時(shí)需要識別該系統(tǒng)中的硬件。lspci 命令用于顯示連接到 PCI 總線的所有設(shè)備,從而滿足上述需求。該命令由 pciutils 包提供,可用于各種基于 Linux 和 BSD 的操作系統(tǒng)。

基礎(chǔ)用法
由于訪問權(quán)限,普通用戶運(yùn)行 lspci 時(shí)顯示的信息可能會(huì)受限,因此可以使用 sudo 運(yùn)行命令,系統(tǒng)會(huì)給出完整的信息圖。
直接運(yùn)行 lspci 命令會(huì)列出 PCI 總線及其連接的設(shè)備,下圖是在我的媒體中心 PC 上的演示樣例。圖中是一個(gè)基于 AMD Phenom CPU 的系統(tǒng),所以它有一個(gè) AMD 芯片組,以及 Atheros 無線適配器和 Nvidia 顯卡。所有硬件設(shè)備都列出了詳細(xì)信息,例如供應(yīng)商、名稱和型號等:
$ sudo lspci00:00.0Host bridge: AdvancedMicroDevices, Inc. [AMD] RS880 HostBridge00:02.0 PCI bridge: AdvancedMicroDevices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0)00:04.0 PCI bridge: AdvancedMicroDevices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0)00:05.0 PCI bridge: AdvancedMicroDevices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1)00:11.0 SATA controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller[AHCI mode]00:12.0 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller00:12.1 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller00:12.2 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller00:13.0 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller00:13.1 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller00:13.2 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller00:14.0SMBus: AdvancedMicroDevices, Inc. [AMD/ATI] SBx00SMBusController(rev 3c)00:14.1 IDE interface: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller00:14.3 ISA bridge: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller00:14.4 PCI bridge: AdvancedMicroDevices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge00:14.5 USB controller: AdvancedMicroDevices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller00:18.0Host bridge: AdvancedMicroDevices, Inc. [AMD] Family10hProcessorHyperTransportConfiguration00:18.1Host bridge: AdvancedMicroDevices, Inc. [AMD] Family10hProcessorAddressMap00:18.2Host bridge: AdvancedMicroDevices, Inc. [AMD] Family10hProcessor DRAM Controller00:18.3Host bridge: AdvancedMicroDevices, Inc. [AMD] Family10hProcessorMiscellaneousControl00:18.4Host bridge: AdvancedMicroDevices, Inc. [AMD] Family10hProcessorLinkControl01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)01:00.1Audio device: NVIDIA Corporation GK107 HDMI AudioController(rev a1)02:00.0Network controller: QualcommAtheros AR9287 WirelessNetworkAdapter(PCI-Express) (rev 01)

詳細(xì)輸出
添加 -v 選項(xiàng)會(huì)顯示每個(gè)設(shè)備的詳細(xì)信息,你可以使用 -vv 或 -vvv 來獲取更多的設(shè)備細(xì)節(jié)。在 -v 級別,lspci 會(huì)顯示所有設(shè)備的各種子系統(tǒng)和內(nèi)存地址、中斷請求(IRQ)編號和一些其他功能信息。輸出信息會(huì)非常長。在你的系統(tǒng)上試一試吧。

使用 grep 過濾搜索
你可能會(huì)需要縮小搜索范圍。例如,RPM Fusion 網(wǎng)站有安裝 Nvidia 圖形驅(qū)動(dòng)程序的說明,里面就首先使用了 grep 命令來定位顯卡信息。下面是我在筆記本電腦上得到的輸出:
$ sudo lspci | grep-e VGA00:02.0 VGA compatible controller: IntelCorporation UHD Graphics620(rev 07)$ sudo lspci | grep-e 3D01:00.03D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)
下面(LCTT 譯注:原文為 “above”,應(yīng)為作者筆誤)的 grep 命令在我的媒體中心 PC 上定位了一個(gè) VGA 設(shè)備,但沒有顯示 3D 設(shè)備。
$ sudo lspci | grep-e VGA01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)$ sudo lspci | grep-e 3D$

按供應(yīng)商 ID 搜索
還有另一種無需 grep 的方法可以使用。假設(shè)我想確認(rèn)一下此計(jì)算機(jī)是否有其他的 Nvidia 設(shè)備,在此之前我們還需要一些額外信息,使用 -nn 選項(xiàng)顯示的供應(yīng)商和設(shè)備 ID 號。在我的媒體中心 PC 上,此選項(xiàng)會(huì)給出我的 VGA 卡、供應(yīng)商 ID 和設(shè)備 ID:
$ sudo lspci -nn | grep-e VGA01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
設(shè)備名稱后的方括號內(nèi)有用冒號分隔的數(shù)字,即供應(yīng)商和設(shè)備 ID。輸出表明 Nvidia Corporation 制造的設(shè)備的供應(yīng)商 ID 為 10de。
-d 選項(xiàng)用于指定供應(yīng)商、設(shè)備或類 ID 的所有設(shè)備。以下是我系統(tǒng)中的所有 Nvidia 設(shè)備(保留 -nn 以解析供應(yīng)商 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.1Audio device [0403]: NVIDIA Corporation GK107 HDMI AudioController[10de:0e1b] (rev a1)
從輸出中可以看到,除了顯卡之外,我還有一個(gè) Nvidia 音頻設(shè)備。實(shí)際上它們都屬于同一張 Nvidia GeForce GTX 650 卡,但這仍然是一個(gè)很好的示例。

內(nèi)核模塊
結(jié)合 PCI 硬件設(shè)備,lspci 可以使用 -k 選項(xiàng)顯示內(nèi)核加載了哪些驅(qū)動(dòng)程序模塊。我將此選項(xiàng)添加到我的 lspci 命令來查看有關(guān)我的 Nvidia 設(shè)備的信息。
$ 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 inuse: nvidiaKernel modules: nvidiafb, nouveau, nvidia_drm, nvidia01:00.1Audio device [0403]: NVIDIA Corporation GK107 HDMI AudioController[10de:0e1b] (rev a1)Subsystem: eVga.com. Corp. GK107 HDMI AudioController[3842:2650]Kernel driver inuse: snd_hda_intelKernel modules: snd_hda_intel
可以看到額外顯示了兩行:正在使用的內(nèi)核驅(qū)動(dòng)程序 和 內(nèi)核模塊,其中后者列出了可用于支持該設(shè)備的模塊。

同步最新狀態(tài)
新設(shè)備和供應(yīng)商總是在不斷迭代。如果看到顯示為 unknown 的設(shè)備,說明你的 PCI 設(shè)備 ID 數(shù)據(jù)庫可能已過時(shí)。有兩種方法可以檢查更新。-Q 選項(xiàng)會(huì)使用 DNS 查詢中央數(shù)據(jù)庫,當(dāng)然,這需要聯(lián)網(wǎng)。
$ sudo lspci -Q
你還可以通過運(yùn)行命令 update-pciids 來更新本地 PCI ID 數(shù)據(jù)庫。
$ sudo update-pciidsDownloaded daily snapshot dated 2021-08-2203:15:01

了解有關(guān)你的硬件的更多信息
當(dāng)然,lspci 只是 Linux 中用于查詢系統(tǒng)硬件和軟件的諸多命令之一。讀者可以在閱讀關(guān)于 USB 設(shè)備的文章,了解有關(guān) Linux 硬件的更多信息:使用此 USB ID 存儲(chǔ)庫識別 Linux 上的更多設(shè)備。
推薦閱讀:
Linux服務(wù)器上監(jiān)控網(wǎng)絡(luò)帶寬的18個(gè)常用命令
5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹莓派,等等。在公眾號內(nèi)回復(fù)「1024」,即可免費(fèi)獲取!!

