awk
ログを確認し、I/O 出力をモニターする必要があります。ログは毎秒生成されます。 1秒あたりに生成されたログを監視するのに苦労しているようです。次の場合、その行の出力のみを提供するコマンドを探しています。 210.00以上のしきい値を超えるか180.00未満に低下します。
しきい値を超える唯一の出力を取得する方法はありますか?
出力例:
Jun 20, 2016 interval i/o MB/sec bytes read resp read write resp resp queue cpu% cpu%
rate 1024**2 i/o pct time resp resp max stddev depth sys+u sys
13:28:40.040 6571 190.00 23.75 131072 77.89 80.840 80.827 80.885 90.911 2.783 15.4 0.1 0.1
13:28:41.041 6572 198.00 24.75 131072 79.29 80.800 80.491 81.984 94.508 2.865 16.0 0.0 0.0
13:28:42.041 6573 198.00 24.75 131072 85.35 80.803 80.719 81.295 90.176 2.650 16.0 0.0 0.0
13:28:43.041 6574 198.00 24.75 131072 79.29 80.813 80.789 80.902 92.090 2.687 16.0 0.0 0.0
13:28:44.041 6575 197.00 24.63 131072 80.20 81.195 81.020 81.905 91.351 3.385 16.0 0.0 0.0
13:28:45.041 6576 198.00 24.75 131072 85.35 80.805 80.814 80.752 90.865 2.795 16.0 0.0 0.0
13:28:46.040 6577 198.00 24.75 131072 80.81 80.816 80.733 81.166 94.233 2.946 16.0 0.0 0.0
13:28:47.040 6578 198.00 24.75 131072 78.28 80.810 80.746 81.042 91.541 2.882 16.0 0.0 0.0
13:28:48.040 6579 198.00 24.75 131072 79.29 80.784 80.788 80.770 92.255 2.799 16.0 0.1 0.0
13:28:49.041 6580 197.00 24.63 131072 82.23 80.811 80.637 81.619 94.005 3.311 16.0 0.0 0.0
13:28:50.041 6581 199.00 24.88 131072 81.41 80.829 80.678 81.489 90.607 2.851 16.0 0.0 0.0
答え1
列3のすべての行が制限を超えるようにするには、次のようにします。
awk '$3>=210 || $3<=180 {print}'
データが再び制限内に戻るまで最初の行だけが必要な場合は、次のようにします。
awk '$3>=210 { if(!hi)print; hi=1; lo=0; next }
$3<=180 { if(!lo)print; lo=1; hi=0; next }
{ hi = 0; lo = 0 }'