Linux에서 bash, awk, sed를 사용하여 모든 디스크 I/O 속도를 모니터링해야합니다. 문제는 한 시간 간격으로 한 행을 반환해야한다는 것입니다. 따라서이 한 행에는 tps
, kB_read/s
, kB_wrtn/s
, kB_read
, kB_wrtn
이 포함되어야하지만 모든 디스크별로 요약되어야합니다.리눅스에서 디스크 I/O 속도를 모니터링하는 스크립트
-d -k -p `parted -l | grep Disk | cut -f1 -d: | cut -f2 -d' '` > /tmp/jPtafDiskIO.txt
echo `date +"%H:%M:%S"`,`awk 'FNR>2' /tmp/jPtafDiskIO.txt | awk 'BEGIN {FS=OFS=" "}NR == 1 { n1 = $2; n2 = $3; n3 = $4; n4 = $5; n5 = $6; next } { n1 += $2; n2 += $3; n3 += $4; n4 += $5; n5 += $6 } END { print n1","n2","n3","n4","n5 }'` >> diskIO.log
내가 거의 다 이니 이제
-d -k -p `parted -l | grep Disk | cut -f1 -d: | cut -f2 -d' '`
멋진 트릭 열을 요약 :
-d -k -p $interval $loops
내가 사용하는 모든 디스크를 제한하려면 여기 자연 선택은 물론이다 , 그러나 이것은 (루프에서 실행) 처음부터 매번 호출되기 때문에 간격에서 간격으로 통계를 얻지 못하지만 항상 평균을 취합니다 (각 호출은 꽤 똑같은 것을 가져옵니다). 출력).
나는 복잡한 것처럼 들리 겠지만 어쩌면 누군가가 아이디어를 가지고있을 것입니까? 아마 완전히 다른 접근법일까요? Thx.
편집 :
샘플 입력 (/tmp/jPtafDiskIO.txt) :
> Linux 2.6.18-194.el5 (hostname) 08/25/2012
>
> Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
> sda 0.00 0.00 0.00 35655 59
> sda2 0.00 0.00 0.00 67 272
> sda1 0.00 0.00 0.00 521 274
> sdb 52.53 0.56 569.40 20894989
> 21065384388 sdc 1.90 64.64 10.93
> 2391333384 404432217 sdd 0.00 0.00 0.04
> 17880 1343028
출력 diskIO.log :
16:53:12,54.43,65.2,580.37,2412282496,21471160238
견본 출력뿐만 아니라 샘플 출력도 제공해 주시겠습니까 – Anders