[server] 꼬리에 새로운 줄의 수를 보는 방법

나는 이런 식으로하고 싶다 :

watch tail -f | wc -l
#=> 43
#=> 56
#=> 61
#=> 44
#=> ...

매초 새로운 줄의 꼬리를 센다

/ 리눅스, CentO

더 명확하게. 나는 이와 같은 것을 얻었다 :

tail -f /var/log/my_process/*.log | grep error

일부 오류 메시지를 읽고 있습니다. 그리고 이제 그것들을 세고 싶습니다. 몇 초 ~ 오류가 발생했습니다. 따라서 로그의 한 줄은 프로세스에서 하나의 오류입니다.



답변

나는 최근에 pv를 발견했으며 정말 멋지다.

tail -f logfile | pv -i2 -ltr > /dev/null

  • -i2 = 2 초마다 카운트
  • -l = 카운트 라인
  • -t = 인쇄 시간
  • -r = 쇼율

답변

빠르고 더러운 방법이 있습니다. 기본적으로 tailwatch wc를 별도의 부분으로 나누고 다음과 같은 작업을 수행 하려고합니다 .

tail -f /var/log/my_process/*.log |grep error > /tmp/error.lines &
watch wc /tmp/error.lines

이 시점에서 수학을 수행하여 오류 / 초 수를 얻을 수 있습니다. 그러나 오류율의 일회성 검사를 위해이 작업을 수행하는 경우 빠르고 더러운 것이 충분할 수 있습니다.


답변

pv를 사용할 수없는 경우 perl을 사용하여 수행 할 수 있습니다.

1 초마다 :

tail -f  recycleBack*out  | perl -e 'while (<>) {$l++;if (time > $e) {$e=time;$i++;print "$i=> $l\n";$l=0}}'

10 초마다

tail -f  recycleBack*out  | perl -e 'while (<>) {$l++;if (time > $e+10) {$e=time;$i++;print "$i=> $l\n";$l=0}}'

샘플 출력 :

1=> 1
2=> 1523
3=> 1339
4=> 1508
5=> 1785
6=> 1587
7=> 1770
8=> 1432
9=> 1339
10=> 1555
11=> 1663
12=> 1693
13=> 1647


답변

다음과 같이 시도해보십시오.

tail -f /var/log/my_process/*.log | perl -pe '$_ = "$. $_"'

각 줄 앞에 줄 번호를 인쇄합니다.


답변