如何快速提升网站流量?

在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)
酷番叔酷番叔
上一篇 3天前
下一篇 3天前

相关推荐

  • Linux如何查看所有文件?

    ls 命令(最常用)基础用法ls /path/to/directory # 查看指定目录内容ls # 查看当前目录内容关键选项-a:显示所有文件(包括隐藏文件,如 .config) ls -a-l:以详细列表显示(权限、大小、时间等) ls -l-R:递归显示 ls -R /path-h:文件大小转为易读格式……

    2025年7月15日
    1500
  • 如何用免费工具提升3倍效率?

    在Linux环境下使用GCC获取键值(特别是实时单字符输入)需要处理终端的缓冲机制,以下是详细实现方法:基础方法:标准输入函数int main() { char c; printf("Press a key (需按回车): "); c = getchar(); // 阻塞等待输入 print……

    2025年7月17日
    1400
  • Kafka目录找不到?正确位置在哪

    在Linux系统中启动消息队列(MQ)服务是部署分布式应用的关键步骤,下面以两种主流MQ(RabbitMQ和Apache Kafka)为例,详细说明启动流程,确保操作安全可靠,内容严格遵循官方文档,注重可操作性和安全性,启动前的准备工作环境要求系统:Ubuntu/CentOS 7+(本文以Ubuntu 22.0……

    2025年6月23日
    1500
  • Linux运行Lua脚本竟如此简单?

    Lua在Linux中的安装方法根据发行版选择对应命令(需sudo权限):Ubuntu/Debian sudo apt update && sudo apt install lua5.4 # 安装Lua 5.4(推荐)CentOS/RHEL sudo yum install epel-releas……

    2025年7月8日
    1400
  • 系统升级如何备份文件防误删?

    Linux系统以开源、安全、高效著称,适用于开发、学习及日常办公,在笔记本上安装Linux可提升性能并深度定制操作环境,本指南遵循专业操作规范,结合硬件兼容性与安全实践,逐步引导完成安装(参考DistroWatch及Linux官方文档),创建系统恢复U盘(Windows可通过”创建恢复驱动器”功能),选择Lin……

    2025年7月9日
    1900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信