命令简介

lspci 是一个用于显示计算机中 PCI (Peripheral Component Interconnect) 总线上设备信息的命令行工具。它可以列出所有 PCI 设备及其详细配置,包括供应商 ID、设备 ID、类代码、revision等。lspci 命令对于识别硬件设备、诊断硬件问题以及配置设备驱动程序等场景非常有用。

命令格式

1
lspci [选项]

参数说明

参数 说明 备注
-v 显示详细设备信息 包括配置空间的所有数据
-vv 显示更多详细设备信息 增加一些可读性信息
-vm 显示驱动程序关联 显示设备所使用的内核驱动程序
-k 仅显示分配了驱动程序的设备 只列出已分配驱动程序的设备
-nn 显示数字ID而不是名称 显示供应商和设备代码
-s [[[[<域>]]:<总线>]:[<插槽>].[] 仅显示指定设备的信息 例如 -s 0:0.0 显示指定总线和插槽的设备
-D 仅显示分配给供应商的设备 需要指定供应商ID
-i 指定显示特定类型的设备 例如 -i network 只显示网络设备

命令实例

基本用法

1.列出所有 PCI 设备

1
lspci

这将列出系统中所有 PCI 设备的基本信息。

2.显示详细设备信息

1
lspci -v

这将显示所有 PCI 设备的详细配置信息。

3.显示驱动程序关联

1
lspci -vm

这将显示每个 PCI 设备所使用的内核驱动程序。

4.仅显示指定类型的设备

1
lspci -i network

这将只显示网络设备的信息。

5.仅显示特定设备的信息

1
lspci -s 0:0.0

这将只显示总线 0、插槽 0 的 PCI 设备信息。

扩展用法

1.将输出保存到文件

1
lspci -vmm > pci_devices.txt

这将显示所有 PCI 设备的详细信息,包括关联的内核模块,并将输出保存到 pci_devices.txt 文件中。

2.与 grep 组合过滤输出

1
lspci | grep -i nvidia

这将仅显示与 NVIDIA 相关的 PCI 设备信息。

3.显示特定供应商的设备

1
lspci -D 0x8086

这将仅显示由英特尔公司 (供应商 ID 0x8086) 生产的 PCI 设备。

高级用法

1.获取 PCI 设备的路径

1
lspci -Dnmm | grep -i nvidia | awk '{print $1}' | xargs -I{} basename {}

这将显示与 NVIDIA 相关的 PCI 设备的路径,例如 0000:01:00.0。这对于识别特定设备以进行进一步配置非常有用。

2.检查 PCI 设备的电源管理状态

1
lspci -vmms $(lspci | grep VGA | awk '{print $1}')

这将首先获取显卡设备的 PCI 地址,然后使用该地址显示设备的详细信息,包括电源管理状态。这可用于排查显卡相关问题。

3.检查是否存在未分配驱动程序的设备

1
2
3
4
5
if lspci -n | grep "^[^"]" > /dev/null; then
echo "存在未分配驱动程序的 PCI 设备"
else
echo "所有 PCI 设备均已分配驱动程序"
fi

这个脚本将检查是否存在未分配内核驱动程序的 PCI 设备。如果存在,它将打印一条警告消息。

以上是关于 lspci 命令的详细文档,包括命令简介、语法格式、参数使用说明、演示实例以及扩展和高级使用方法。lspci 命令是一个非常有用的工具,可以帮助识别和诊断硬件设备,配置设备驱动程序,排查硬件相关问题等。掌握 lspci 命令的使用方法对于运维工程师和系统管理员非常重要。