awk
로그를 확인하고 I/O 출력을 모니터링해야 합니다. 로그는 초당 생성됩니다. 초당 생성된 로그를 모니터링하는 데 어려움을 겪고 있는 것 같습니다. 다음과 같은 경우 해당 라인에 대한 출력만 제공하는 명령을 찾고 있습니다. 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 }'