lspci | grep -i network常只显示“network controller”因默认输出仅含设备类别,不包含芯片型号;需用-lspci -v -s指定槽位查subsystem行、-lspci -nn获取vid/pid硬件id、-sudo lspci -k确认驱动绑定,且usb/虚拟网卡需用lsusb或宿主机排查。

lspci | grep -i network 为什么经常只显示“Network controller”却不带型号
因为默认输出只显示设备类别,不展开具体芯片型号。lspci 不加参数时,很多网卡(尤其是 Realtek、Intel 某些型号)会被简写为 Network controller 或 Ethernet controller,后面没跟厂商和芯片名。
真正有用的型号信息藏在更详细的字段里,必须配合参数才能挖出来:
-
lspci -v -s 00:1f.6:用-s指定槽位 +-v查完整描述,重点看Subsystem:行,那里通常有“RTL8168/8111”或“i219-V”这类实际型号 -
lspci -nn | grep -i network:输出带[10ec:8168]这种格式,10ec是 Realtek 厂商 ID,8168是芯片 ID,比文字描述更可靠,可直接查内核pci_ids或驱动源码 -
sudo lspci -k -s 00:1f.6:-k专门查驱动绑定,能同时看到Kernel driver in use:和Kernel modules:,确认是不是用了正确驱动
sudo lspci -v 输出里哪些字段才是真正有用的
不加 sudo 时,Kernel driver in use: 这类关键字段会为空或显示 blank,根本没法判断驱动是否生效。加了 sudo 后,以下几行才是排查核心:
-
Kernel driver in use:—— 当前正在工作的驱动,比如e1000e、r8169、igb,不是这个就说明驱动没加载对 -
Subsystem:—— 实际硬件型号,比主设备名更准,例如 “Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller” -
Memory at ... (64-bit, non-prefetchable)—— 内存映射地址,如果这里显示[disabled]或地址异常,可能是 BIOS 关闭了 PCIe 设备或资源冲突 -
Capabilities:下的MSI、PCIe字段 —— 看是否支持现代中断机制,老旧网卡可能只有 INTx,影响高并发性能
查不到网卡?先确认是不是 USB 或虚拟网卡
lspci 只管 PCI/PCIe 总线上的设备,对 USB 网卡和虚拟机网卡完全无效。
- USB 网卡:用
lsusb | grep -i network或lsusb -v | grep -A 5 -B 5 "Ethernet\|Network",输出里找bDeviceClass为02(CDC)、ff(vendor-specific)的设备 - 云服务器 / KVM 虚拟机:看到的
Red Hat, Inc Virtio network device或VMware PCnet32都是虚拟网卡,真实物理型号得去云控制台或宿主机上查 - 某些主板集成网卡(如 Intel I225-V)在 BIOS 中被禁用后,
lspci就完全不显示,需进 BIOS 开启Onboard LAN或PCIe Device
lspci 命令报 command not found 怎么办
这不是权限问题,是系统压根没装 pciutils 包。
- Debian/Ubuntu:
sudo apt install pciutils - RHEL/CentOS/AlmaLinux:
sudo dnf install pciutils或sudo yum install pciutils - Alpine Linux:
apk add pciutils - 最小化安装的系统(如 CoreOS、某些容器镜像)默认不带,必须手动装,否则连
lspci -nn都跑不了
装完再跑 lspci,别急着加 sudo——基础列表不需要权限,但想看驱动和内存映射,sudo 不可省。











