
마운트된 모든 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