Me gustaría medir los tiempos de lectura de todos los dispositivos USB montados.
Iencontróque hdparm
es adecuado para esto:
$ sudo hdparm -tT /dev/sdb1
Sin embargo, me gustaría conectar varios dispositivos e iterar sobre ellos /dev/bus/usb/<bus>/<address>
. Esto me da un error:
$ sudo hdparm -tT /dev/bus/usb/003/002
read(2097152) returned 62 bytes
BLKGETSIZE failed: Operation not permitted
BLKFLSBUF failed: Operation not permitted
(Encontré el autobús y la dirección a través de lsusb
).
¿Cómo puedo hacer que este enfoque funcione?
Respuesta1
Podrías hacer algo como esto:
for i in $(cat /proc/partitions | grep -v "[0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done
Esto recorre /proc/partitions
y recupera los nombres de los dispositivos antes de pasar esos valores a hdparm
, que está destinado a ejecutarse en dispositivos, no en particiones (por ejemplo, /dev/sda no /dev/sda1).
Tal como está escrito, el comando anterior también funcionará en los discos duros existentes, así como en los dispositivos USB. Para excluirlos, modifique la grep -v
porción. El comando anterior mostrará todas las líneas que no terminan en a digit
ni contienen la palabra name
.
Por ejemplo, si tiene dos discos duros que desea excluir ( /dev/sda
y /dev/sdb
), el comando anterior podría cambiarse a esto:
for i in $(cat /proc/partitions | grep -v "[ab0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done