如何快速提升网站流量?

在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 全设备类型分析 高

根据实际需求选择方法:

  • 快速检查USB → lsusb
  • 驱动开发/调试 → sysfs或udevadm
  • 自动化监控 → 自定义脚本

引用说明:

  • 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

相关推荐

  • linux 如何查看txt文件内容

    Linux 中,可以使用 cat、less 或 more 命令查看 txt 文件内容。

    2025年8月18日
    27400
  • NAT切换如何避免业务中断?

    在Linux系统中直接修改iptables/nftables规则(尤其是NAT表)会导致:现有连接中断:已建立的TCP连接和UDP会话因规则刷新而丢失,业务抖动:在线用户感知到网络闪断,影响实时应用(如视频会议、金融交易),状态不一致:conntrack表记录与NAT规则不匹配,引发数据包丢弃,平滑生效的核心原……

    2025年7月24日
    27600
  • Linux环境下如何彻底卸载已安装的JRE程序及残留文件?

    在Linux系统中卸载JRE(Java Runtime Environment)需要根据其安装方式选择不同的方法,常见的安装方式包括系统包管理器(如apt、yum/dnf)安装、手动解压安装以及通过SDKMAN!等工具安装,以下是详细的卸载步骤和注意事项,确认JRE的安装方式在卸载前,需先确定JRE是通过哪种方……

    2025年8月29日
    20700
  • Linux按键如何神奇变输入?

    按键触发硬件中断,内核驱动解码为扫描码,输入子系统转换为统一事件格式,经用户空间服务(如X/Wayland)传递给应用程序。

    2025年6月16日
    30100
  • Linux装XP选虚拟机还是双系统?

    虚拟机安装(推荐)优势:安全、便捷、不破坏现有系统,适合大多数用户,工具:Oracle VirtualBox(免费开源)准备工作:合法XP安装镜像(ISO文件)及有效产品密钥(需自行准备正版授权),确保Linux系统有至少15GB可用空间,2GB以上内存,步骤详解:安装VirtualBoxUbuntu/Debi……

    2025年7月9日
    36200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信