私は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 を保持しながら次の行を読み込みます。