如何从lspci提取PCI代码?GPU场景提取方法咨询
一、通用提取PCI代码的方法
首先得明确:在lspci的输出里,PCI代码(厂商ID+设备ID)是以[XXXX:YYYY]的格式标注的——前四位XXXX是厂商专属ID,后四位YYYY是对应设备的ID。
如果想快速查看所有设备的PCI代码,直接运行以下命令即可:
lspci -nn
-nn参数会强制让lspci显示每个设备的ID信息,你能在每一行的设备描述里找到对应的[XXXX:YYYY]字符串,这就是你要的PCI代码。
二、提取GPU对应的PCI代码
针对你的需求,结合你已经运行lspci -nnk | grep -i nvidia得到的输出,我们可以精准提取GPU的PCI代码:
1. 从现有输出中直接识别
你的输出里,两行标注VGA compatible controller的内容就是GPU设备,它们对应的PCI代码是[10de:1b06]:
02:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b06] (rev a1)
03:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b06] (rev a1)
这里10de是NVIDIA的标准厂商ID,1b06则是你这款GPU的专属设备ID。
2. 用命令直接提取(更高效)
如果想一步到位通过命令得到GPU的PCI代码,推荐这几种方式:
方式一:用awk精准提取
先过滤出NVIDIA的VGA设备,再提取方括号里的ID:lspci -nn | grep -i "vga compatible controller" | grep -i nvidia | awk -F'[][]' '{print $2}'这个命令会直接输出
10de:1b06,如果是多GPU配置,会每行输出一个对应ID。方式二:用grep匹配提取
直接匹配NVIDIA相关设备的PCI代码格式:lspci -nnk | grep -i nvidia | grep -o '\[[0-9a-fA-F]*:[0-9a-fA-F]*\]'这个命令会输出所有NVIDIA相关设备的PCI代码(包括音频控制器的
[10de:10ef]);如果只需要GPU的,加上vga过滤即可:lspci -nnk | grep -i nvidia | grep -i vga | grep -o '\[[0-9a-fA-F]*:[0-9a-fA-F]*\]'
内容的提问来源于stack exchange,提问作者KillerSnail

