iostat 파일을 구문 분석하고 시간과 iowait를 얻는 방법을 찾고 있습니다. 내 파일은 다음과 같습니다.
Linux OSWbb v7.3.3
zzz ***Wed Jul 20 19:00:08 EDT 2016
avg-cpu: %user %nice %system %iowait %steal %idle
49.62 0.00 2.92 13.71 0.00 33.76
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 15.00 2.00 8.00 8.00 92.00 20.00 0.02 2.40 1.40 1.40
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zzz ***Thu Jul 20 19:01:09 EDT 2016
avg-cpu: %user %nice %system %iowait %steal %idle
10.33 0.00 7.81 20.26 0.00 61.59
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
zzz ***Thu Jul 20 19:02:09 EDT 2016
avg-cpu: %user %nice %system %iowait %steal %idle
10.33 0.00 7.81 20.26 0.00 61.59
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
첫 번째 줄(zzz)에서 시간을 가져오고 여러 파일에서 %iowait를 반환하고 싶습니다. 어떤 제안이라도 대단히 감사하겠습니다. 감사해요
답변1
을 사용하여 패턴을 선택 awk
하고 원하는 행을 선택한 다음 필드를 추출할 수 있습니다. 예를 들어
awk '
/:[0-9][0-9]:/ { time=$5 }
/%iowait/ { getline; iowait=$4; print time, iowait }
'
이는 행과 일치하며 :<two digits>:
필드 5를 유지합니다. row 와 일치하면 %iowait
필드 4를 유지하면서 다음 행을 읽습니다.