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/sda1이 아닌 /dev/sda).

작성된 대로 위 명령은 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

관련 정보