请有人用简单的术语向我解释如何使用 usbmon 来跟踪从 pendrive 传输的数据量?
答案1
usbmon.txt和usbmon.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 最简单的方法是:
- 使用 lsusb 检查设备“总线”和编号“设备”(“”中是 lsusb 字段)
- 安装 usbmon
sudo modprobe usbmon
- 启动 wireshark
sudo wireshark
- 在 wireshark 中选择要监听的内容:
usbmon{Bus nr form lsusb} fe: usbmon1
- 为您的“设备”号码添加过滤器
更简洁的方法是为你的用户添加 usbmon 规则,这样你就可以在不具备 root 权限的情况下使用它(和 wireshark)