iostat -x
真の値を示しません。iostat -x 1
これは、実行して 1 秒あたりの値を見れば明らかです。実行するiostat -x 1 2
と、正確な行を取得してから値を取得することで、必要な値を取得できると思いました。
iostat -x 1 2 | awk '{gsub(/,/,"."); if (NR==15) printf ("%s,%s,%s,", $1, $3 ,$4); else if (NR == 18) printf ("%s,", $14);}'
15 行目から %user、%system、%iowait を取得し、18 行目から %sda を取得します。
残念ながら、異なるディスクを持つマシンが複数あるため、これを行うことができません。sdaを実行するiostat -x
と、18 行目、21 行目、または別の行にある可能性があります。
iostat -x
2 番目のサンプルのみを実行して取得するにはどうすればよいですか? または、行に関して必要な値を取得するにはどうすればよいですか?
私は考えiostat -x 1 2 | awk '/^sda/ {print $14}'
て2番目の値だけを取得しましたが、このアプローチに従うと、必要なすべての値を取得するのに8秒かかります.
の出力iostat -x 1 2
Linux 3.10.0-327.28.3.el7.x86_64 (sth) 13/12/2016 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0,70 0,00 0,23 0,09 0,00 98,98
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
nvme0n1 0,00 0,00 0,00 0,00 0,03 0,00 38,29 0,00 0,13 0,13 0,00 0,02 0,00
sda 0,01 0,18 0,23 7,52 38,37 3132,67 819,15 1,26 162,49 219,88 160,76 3,74 2,89
sdb 0,00 0,00 0,62 0,00 78,93 0,00 255,56 0,00 0,40 0,40 0,00 0,24 0,01
dm-0 0,00 0,00 1,02 2,10 21,16 156,62 113,89 0,11 34,80 4,22 49,58 2,13 0,66
dm-1 0,00 0,00 0,00 0,00 0,01 0,00 59,16 0,00 0,54 0,36 3,15 0,42 0,00
dm-2 0,00 0,00 0,01 0,01 0,13 0,76 84,61 0,00 177,30 0,58 287,55 28,81 0,06
avg-cpu: %user %nice %system %iowait %steal %idle
0,03 0,00 0,03 0,00 0,00 99,94
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
nvme0n1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
sdb 0,00 0,00 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 0,00 0,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00