我正在尝试在 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:xxxx
(x
是十六进制数字),所以这就是我匹配的内容。
如果您有多个可以匹配的显卡并且只想要 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