설치된 모든 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
섹션을 수정하세요. 위 명령은 digit
a로 끝나지 않거나 단어를 포함하는 모든 줄을 표시합니다 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