
Ich möchte die Lesezeiten aller gemounteten USB-Geräte messen.
ICHgefundendas hdparm
ist dafür geeignet:
$ sudo hdparm -tT /dev/sdb1
Ich möchte jedoch mehrere Geräte anschließen und über iterieren /dev/bus/usb/<bus>/<address>
. Dies führt zu einem Fehler:
$ sudo hdparm -tT /dev/bus/usb/003/002
read(2097152) returned 62 bytes
BLKGETSIZE failed: Operation not permitted
BLKFLSBUF failed: Operation not permitted
(Bus und Adresse habe ich über gefunden lsusb
.)
Wie kann ich diesen Ansatz zum Funktionieren bringen?
Antwort1
Sie könnten etwa Folgendes tun:
for i in $(cat /proc/partitions | grep -v "[0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done
Dies durchläuft die Schleife /proc/partitions
und ruft die Gerätenamen ab, bevor diese Werte an übergeben werden hdparm
, das auf Geräten und nicht auf Partitionen ausgeführt werden soll (z. B. /dev/sda, nicht /dev/sda1).
Wie geschrieben funktioniert der obige Befehl auch auf vorhandenen Festplatten und USB-Geräten. Um sie auszuschließen, ändern Sie den grep -v
Abschnitt. Der obige Befehl zeigt alle Zeilen an, die nicht mit einem enden digit
oder das Wort enthalten name
.
Wenn Sie beispielsweise zwei Festplatten ausschließen möchten ( /dev/sda
und /dev/sdb
), kann der obige Befehl wie folgt geändert werden:
for i in $(cat /proc/partitions | grep -v "[ab0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done