如何使用 usbmon 了解从 usb(pendrive)传输的数据量?

如何使用 usbmon 了解从 usb(pendrive)传输的数据量?

请有人用简单的术语向我解释如何使用 usbmon 来跟踪从 pendrive 传输的数据量?

答案1

usbmon.txtusbmon.txt 示例对 usbmon 或 usbdump 给出了清晰的解释。

您必须找到连接到您设备的总线。为此,请打开您的终端并输入:

cat /sys/kernel/debug/usb/devices

它将给你类似如下的输出:

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0557 ProdID=2004 Rev= 1.00
S:  Manufacturer=ATEN
S:  Product=UC100KM V2.00

在上面的示例输出中,T 有其 ID 的 Bus。因此,Bus ID 为 03。

或者

要查看总线 ID,您还可以使用 lsusb,打开终端并输入:

lsusb

它将给你类似如下的输出:

Bus 003 Device 002: ID 0557:2004 ATEN UC100KM V2.00

即公交车号 003。

现在您知道 USB 已连接到 BUS ID 003。然后在终端输入:

cat /sys/kernel/debug/usb/usbmon/3u > /tmp/1.mon.out

在上面的命令中,您正在监视总线 ID 03 中发生的数据传输。如果您想监视所有总线上的数据传输,请输入:

cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out

它将扫描直到传输结束。如果要中断,请使用CTRL+ C

要理解输出,请阅读:usbmon:USB 监控框架

答案2

找到设备所在的总线号(参见 shekar 的回答)。然后在原始 /dev/usbmonX 上使用管道流量计(或 pipebench)来测量吞吐量,或将其转储到文件中,并使用可视化方式来显示其增长情况车速表..fe 表示总线号 2 上的设备:

# next three commands are equivalent - use any one
# pipemeter /dev/usbmon2 > /dev/null
# pipemeter < /dev/usbmon2 > /dev/null
# cat /dev/usbmon2 | pipemeter > /dev/null

# in 1st terminal
# cat /dev/usbmon2 > /tmp/usbdump
# in 2nd terminal
# speedometer /tmp/usbdump

/sys/kernel/debug/usb/usbmon/Xu 文件的格式化文本输出会产生少量流量的开销,但似乎会截断较大的数据块,因此原始 usbmon 设备应该会给您更准确的数字。

答案3

安装 wireshark 最简单的方法是:

  1. 使用 lsusb 检查设备“总线”和编号“设备”(“”中是 lsusb 字段)
  2. 安装 usbmonsudo modprobe usbmon
  3. 启动 wiresharksudo wireshark
  4. 在 wireshark 中选择要监听的内容:usbmon{Bus nr form lsusb} fe: usbmon1
  5. 为您的“设备”号码添加过滤器

更简洁的方法是为你的用户添加 usbmon 规则,这样你就可以在不具备 root 权限的情况下使用它(和 wireshark)

相关内容