Linux lspci 命令
在 Linux 系统中,lspci
命令用于列出系统中所有 PCI(Peripheral Component Interconnect)总线设备的详细信息,包括硬件设备如显卡、网卡、声卡等。它是系统管理员和开发者常用的工具,用于诊断硬件、检查设备状态或获取设备信息。以下是对 lspci
命令的详细介绍,包括语法、选项、常见用法和示例。
1. 定义
lspci
:一个命令行工具,显示系统中连接到 PCI 总线的设备信息。- 所属包:通常包含在
pciutils
包中,大多数 Linux 发行版(如 Ubuntu、CentOS、Debian)默认安装。 - 权限:某些详细信息可能需要 root 权限(如
sudo
)。
2. 安装
大多数 Linux 系统预装了 lspci
。如果未安装,可以使用包管理器安装:
- Ubuntu/Debian:
sudo apt update
sudo apt install pciutils
- CentOS/RHEL:
sudo yum install pciutils
- Arch Linux:
sudo pacman -S pciutils
检查是否安装:
lspci --version
3. 语法
lspci [选项]
4. 常用选项
-v
:显示更详细的信息(verbose)。-vv
:显示非常详细的信息(非常 verbose)。-s <slot>
:仅显示指定 PCI 插槽的设备,格式为[[[<domain>]:]<bus>]:[<slot>][.[<func>]]
。-d <vendor>:<device>
:仅显示指定厂商和设备 ID 的设备。-n
:以数字形式显示设备 ID 和厂商 ID(不解析名称)。-nn
:同时显示数字和解析后的名称。-k
:显示驱动程序信息(需要 root 权限)。-t
:以树形结构显示 PCI 设备层次。-m
:以机器可读格式输出。-b
:以总线为中心显示设备(而不是以驱动为中心)。-D
:始终显示 PCI 域(domain),即使域为 0。
5. 基本用法
5.1 列出所有 PCI 设备
lspci
示例输出:
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 07)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio
02:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
- 说明:
- 每行表示一个 PCI 设备,格式为
<bus>:<slot>.<function> <设备类型>: <厂商> <设备名称>
。 - 例如,
00:02.0
表示总线 00、插槽 02、功能 0。
5.2 显示详细信息
lspci -v
示例输出(部分):
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
Subsystem: Dell Device 0810
Flags: bus master, fast devsel, latency 0, IRQ 128
Memory at a0000000 (64-bit, non-prefetchable) [size=16M]
Memory at 90000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Capabilities: <access denied>
- 说明:显示内存地址、中断号等详细信息,可能需要 root 权限查看全部内容。
5.3 显示特定设备
lspci -s 00:02.0
输出:
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
- 说明:仅显示指定插槽的设备(这里是显卡)。
5.4 显示驱动信息
sudo lspci -k
示例输出(部分):
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
Subsystem: Dell Device 0810
Kernel driver in use: i915
Kernel modules: i915
- 说明:显示设备使用的内核驱动(如
i915
用于 Intel 显卡)。
5.5 树形结构
lspci -t
示例输出:
-[0000:00]-+-00.0 Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers
+-02.0 Intel Corporation UHD Graphics 620
+-14.0 Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
+-1f.0 Intel Corporation Sunrise Point-LP LPC Controller
\-1f.3 Intel Corporation Sunrise Point-LP HD Audio
- 说明:以树形结构显示 PCI 设备层次,便于查看设备连接关系。
5.6 显示数字 ID
lspci -nn
示例输出:
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 620 [8086:5917] (rev 07)
- 说明:
[8086:5917]
表示厂商 ID(8086 为 Intel)和设备 ID(5917 为 UHD Graphics 620)。
6. 常见使用场景
- 硬件检测:检查系统中的显卡、网卡、USB 控制器等设备。
- 驱动排查:确认设备是否加载了正确的内核驱动(使用
-k
)。 - 设备调试:获取 PCI 设备的详细信息(如中断号、内存地址)以排查硬件问题。
- 系统配置:在服务器或嵌入式设备中,确认 PCI 设备的连接状态。
7. 高级示例
7.1 查找特定厂商的设备
查找 Intel 设备(厂商 ID 为 8086
):
lspci -d 8086:
输出(示例):
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620
7.2 检查显卡信息
检查系统中所有的 VGA 设备:
lspci | grep VGA
输出:
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
7.3 结合 grep
查找特定设备
查找所有网络相关设备:
lspci | grep -i network
输出:
02:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
8. 注意事项
- 权限问题:某些详细信息(如驱动、内存映射)需要 root 权限,使用
sudo lspci
。 - 设备未识别:如果设备未列出,可能需要检查硬件连接或更新
pciutils
数据库:
sudo update-pciids
- 输出解析:输出中的厂商和设备名称依赖
/usr/share/misc/pci.ids
文件,未更新的文件可能导致名称显示为未知。 - 性能:
lspci
是轻量级工具,适用于快速诊断,但不适合实时监控。 - 替代工具:
lsusb
:查看 USB 设备。lscpu
:查看 CPU 信息。dmidecode
:查看更详细的硬件信息(需要 root 权限)。
9. 总结
lspci
:用于列出 PCI 总线设备信息,适合硬件诊断和驱动检查。- 核心选项:
-v
/-vv
:详细输出。-k
:显示驱动信息。-t
:树形结构。-nn
:显示数字 ID。- 推荐实践:
- 使用
sudo
获取完整信息。 - 结合
grep
过滤特定设备。 - 定期更新
pci.ids
文件以确保设备名称准确。 - 适用场景:硬件检测、驱动排查、系统配置。
如果需要更具体的使用示例(如解析特定设备的详细信息、结合脚本自动化处理)或对其他 Linux 命令的说明,请告诉我!