我想测量所有已安装 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