使用 hdparm 测量所有设备的 USB 读取时间

使用 hdparm 测量所有设备的 USB 读取时间

我想测量所有已安装 USB 设备的读取时间。

成立适合hdparm这个:

$ sudo hdparm -tT /dev/sdb1

但是,我想连接多个设备并迭代/dev/bus/usb/<bus>/<address>。这给了我一个错误:

$ sudo hdparm -tT /dev/bus/usb/003/002
read(2097152) returned 62 bytes
 BLKGETSIZE failed: Operation not permitted
BLKFLSBUF failed: Operation not permitted

(我通过 找到了巴士和地址lsusb。)

我怎样才能使这种方法发挥作用?

答案1

你可以这样做:

for i in $(cat /proc/partitions | grep -v "[0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done

这将循环遍历/proc/partitions并检索设备名称,然后将这些值传递给hdparm,这意味着在设备上运行,而不是在分区上运行(例如 /dev/sda 而不是 /dev/sda1)。

正如所写,上面的命令也将在现有的硬盘驱动器和 USB 设备上运行。要排除它们,请修改该grep -v部分。上面的命令将显示所有不以 a 结尾digit或包含单词 的行name

例如,如果您有两个希望排除的硬盘驱动器(/dev/sda/dev/sdb),则上述命令可以更改为:

for i in $(cat /proc/partitions | grep -v "[ab0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done

相关内容