【发布时间】:2017-04-28 22:32:03
【问题描述】:
iostat -x 不显示实际值。如果您运行iostat -x 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。
不幸的是,我无法做到这一点,因为我有不止一台具有不同磁盘的机器。当我运行iostat -x 时,sda 可能在第 18 行、第 21 行或另一行。
如何运行iostat -x 并仅获得第二个样本?或者我怎样才能得到我想要的关于这条线的值?
我想到了iostat -x 1 2 | awk '/^sda/ {print $14}',然后只得到第二个值,但如果我按照这种方法,我需要 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
【问题讨论】:
标签: linux performance awk sed iostat