2016-12-13 150 views
0

iostat -x不顯示實際值。如果您運行iostat -x 1並查看每秒的值,那很明顯。當我運行iostat -x 1 2時,我認爲我可以通過抓取確切的行和值來獲取我想要的值。如何獲得iostat第二個樣本

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 

回答

1

輸出這會給你的頭和值的第二個實例,你可以限制方面進行進一步的並跳過頭,如果你想

$ iostat -x 1 2 | awk '/^avg-cpu/ {c++; a=4} 
         c==2 && a && a--; 
         c==2 && /^sdb/' 

avg-cpu: %user %nice %system %iowait %steal %idle 
      1.31 0.00 0.22 0.00 0.00 98.47 

Device:   rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util 
sdb    0.00  0.00 0.00 0.00  0.00  0.00  0.00  0.00 0.00 0.00 0.00 

這一塊,沒有標題,只需選擇要打印的字段(而不是$ 0)。

$ iostat -x 1 2 | awk '/^avg-cpu/  {c++; a=2} 
         c==2 && a && !--a {print $0} 
         c==2 && /^sdb/ {print $0}' 

      1.78 0.00 0.78 0.03 0.00 97.41 
sdb    0.00  0.00 0.00 831.00  0.00 6648.00  8.00  0.72 0.87 0.01 0.60