2016-12-13 4 views
0

iostat -x zeigt nicht die realen Werte. Das ist offensichtlich, wenn Sie iostat -x 1 ausführen und die Werte pro Sekunde anzeigen. Als ich iostat -x 1 2 lief, dachte ich, dass ich die Werte bekommen kann, die ich wollte, indem ich die genauen Linien und dann die Werte ergreife.Wie bekomme ich Iostat zweite Probe

iostat -x 1 2 | awk '{gsub(/,/,"."); if (NR==15) printf ("%s,%s,%s,", $1, $3 ,$4); else if (NR == 18) printf ("%s,", $14);}' 

von Zeile 15 geben Sie mir% Benutzer% System% iowait, von Zeile 18 der% sda.

Leider kann ich das nicht tun, weil ich mehr als eine Maschine mit verschiedenen Festplatten habe. Wenn ich iostat -x laufen lasse, könnte sda ​​in Zeile 18, in Zeile 21 oder in einer anderen Zeile sein.

Wie kann ich iostat -x laufen und bekomme nur die zweite Probe? oder wie bekomme ich die Werte, die ich bezüglich der Linie haben möchte?

Ich dachte an iostat -x 1 2 | awk '/^sda/ {print $14}' und dann nur den zweiten Wert, aber wenn ich diesem Ansatz folge, würde ich 8 Sekunden brauchen, um alle Werte zu bekommen, die ich will.

Ausgabe von 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 

Antwort

1

dies wird Ihnen die zweite Instanz der Header und Werte, können Sie die Felder weiter einschränken und die Header überspringen, wenn Sie

wollen
$ 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 

dieses, ohne die Kopfzeilen, wählen Sie einfach das Feld, das Sie drucken möchten (anstelle von $ 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 
Verwandte Themen