查找 PCI ID - 像这样的字符串

查找 PCI ID - 像这样的字符串

我正在尝试在 Linux 上编写带有 KVM 的 PCI GPU 直通设置脚本。您需要通过以下方式找到 pci 设备 ID:

root@kvmatrix:~# lspci -nn | grep VGA | grep NVIDIA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050] [10de:1c81] (rev a1)

我想添加另一个“grep”以仅产生这部分,

10de:1c81

答案1

如果您知道您想要获得什么类型的设备,那么使用它可能会更容易。在这种情况下,“VGA 控制器”是 class 0300,因此您可以告诉lspci您只提供有关这些的信息:

$ lspci -nd::0300|egrep -o "[[:xdigit:]]{4}:[[:xdigit:]]{4}"

这是一个egrep搜索,因此您也可以使用grep -E.因为只有一个项目会匹配xxxx:xxxxx是十六进制数字),所以这就是我匹配的内容。

如果您有多个可以匹配的显卡并且只想要 nVidia 显卡,则可以将lspci -nd10de::0300其限制为仅限该供应商。

答案2

尝试这个 :

lspci -nn  | grep -oP 'VGA.*NVIDIA.*\[\K[\w:]+'

或更便携(一些旧的 Linux 操作系统没有-P开关)

lspci -nn  | perl -lne 'print $& if /VGA.*NVIDIA.*\[\K[\w:]+/'

输出 :

10de:1c81

现场演示右边有解释

答案3

使用discover:硬件检测实用程序

discover --vendor-id --model-id pci | grep NVIDIA | uniq | awk '{print $1":"$2}'

示例输出:

10de:1c81

相关内容