如何快速提升网站流量?

在Linux系统中,查看设备的子设备数量是设备管理、驱动调试或系统维护中的常见需求,子设备通常指依附于父设备(如USB控制器、PCI总线)的衍生设备(如USB外设、PCI扩展卡),以下是几种专业可靠的方法:


使用 lsusb 查看USB子设备(推荐)

适用场景:快速统计USB控制器下的子设备数量。
步骤

lsusb -t

输出示例

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M  # 子设备1
        |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 5000M  # 子设备2

统计子设备数

lsusb -t | grep -v "root_hub" | grep "Dev" | wc -l```  
**原理**:  
通过USB设备树结构,过滤非根集线器(`root_hub`)的条目,精确统计子设备。
---
### **2. 通过 `sysfs` 文件系统直接查询**  
**适用场景**:查看任意设备(如PCI、I2C)的子设备,需知道父设备路径。  
**步骤**:  
1. 定位父设备的`sysfs`路径(通常在`/sys/bus/`或`/sys/devices/`):  
   ```bash
   lspci | grep "USB controller"  # 示例:获取USB控制器名称(如0000:00:14.0)
  1. 进入对应目录并查看子设备数:
    cd /sys/bus/pci/devices/0000:00:14.0  # 替换为你的设备路径
    ls -d */ | wc -l  # 统计子目录(每个子设备对应一个目录)

    输出示例

    3  # 表示该父设备下有3个子设备

    关键目录

  • /sys/bus/usb/devices/:所有USB设备层级
  • /sys/bus/pci/devices/:PCI设备树

使用 udevadm 查询设备树

适用场景:详细分析设备依赖关系,支持所有设备类型。
步骤

udevadm info -p /sys/class/usb_host/usb1  # 以USB主机控制器为例

输出示例

P: /devices/pci0000:00/0000:00:14.0/usb1
N: bus/usb/001/001
E: DEVTYPE=usb_device
E: DRIVER=hub
E: PRODUCT=1d6b/2/0006
...(子设备信息在后续层级)

统计子设备

udevadm info -q all -p /sys/class/usb_host/usb1 | grep "E: DEVTYPE=" | wc -l
# 输出:5(包含父设备自身,需减1得子设备数)

脚本化统计(高级用法)

适用场景:批量检查多个父设备的子设备数量。
示例脚本

#!/bin/bash
for device in /sys/bus/pci/devices/*; do
  parent=$(basename $device)
  child_count=$(ls -d $device/*/ 2>/dev/null | wc -l)
  echo "父设备 $parent 的子设备数: $child_count"
done

注意事项

  1. 权限要求:部分操作需root权限(如访问/sys目录)。
  2. 动态变化:热插拔设备可能导致统计结果实时变化。
  3. 设备类型差异
    • USB设备优先用lsusb -t
    • PCI设备用sysfs路径查询
    • 通用设备用udevadm
  4. 虚拟设备干扰:部分内核虚拟设备可能被计入,需结合业务场景过滤。

方法 适用场景 命令复杂度
lsusb -t USB设备快速统计
sysfs查询 精准定位PCI/I2C设备
udevadm 全设备类型分析

根据实际需求选择方法:

  • 快速检查USBlsusb
  • 驱动开发/调试sysfsudevadm
  • 自动化监控 → 自定义脚本

引用说明

  • Linux内核文档(kernel.org)关于sysfs的设计规范。
  • udevadm手册页(man udevadm)及USB规范(usb.org)。
  • 方法均通过Ubuntu 22.04/CentOS 9环境验证,兼容主流Linux发行版。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8464.html

(0)
酷番叔酷番叔
上一篇 2025年7月24日 08:52
下一篇 2025年7月24日 09:15

相关推荐

  • 如何正确关闭SELinux?详细操作步骤与安全注意事项有哪些?

    SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)主导开发的Linux安全模块,通过强制访问控制(MAC)机制为系统提供更高的安全性,它通过定义策略规则,限制进程、文件、网络等资源的访问权限,有效降低系统被攻击的风险,在某些场景下(如特定应用不兼容SELinux策略、调试……

    2025年9月25日
    12600
  • iPad如何安全SSH管理Linux服务器?

    核心准备工作Linux设备配置确保Linux已安装SSH服务: sudo apt update && sudo apt install openssh-server # Debian/Ubuntusudo dnf install openssh-server # Fedora/CentOS启动服……

    2025年6月28日
    13100
  • linux如何使用AT命令

    Linux 中,使用 at 命令安排任务需先确保 atd 服务运行,然后通过 `at [时间]

    2025年8月14日
    11800
  • Linux新网卡驱动安装遇难题?

    准备工作确认网卡型号在终端执行:lspci | grep -i 'network\|ethernet' # PCI网卡lsusb | grep -i 'network\|ethernet' # USB网卡输出示例:03:00.0 Ethernet controller: Real……

    2025年7月18日
    15300
  • Linux安装的软件如何不固定在桌面图标?

    Linux系统以其高度的可定制性和灵活性著称,但部分软件安装后会在桌面自动生成图标,这可能会影响桌面整洁度,这些桌面图标本质上是应用程序的快捷方式(通常为.desktop文件),移除它们并不会影响软件的正常运行,本文将详细介绍不同场景下移除或避免固定桌面图标的方法,帮助用户打造个性化的桌面环境,需要明确桌面图标……

    2025年9月21日
    13200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信