
マウントされているすべての 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
すべての行を表示します。digit
name
たとえば、除外したいハードドライブが 2 つ (/dev/sda
および/dev/sdb
) ある場合、上記のコマンドを次のように変更できます。
for i in $(cat /proc/partitions | grep -v "[ab0-9]$\|name" | awk '{ print $4 }'); do hdparm -tT /dev/"$i"; done