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


9

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

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

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

/ 리눅스, CentO

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

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

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


무엇을하려고합니까? 추가 된 줄을보고 싶다면 tail -f /path/to/file단독 으로 사용하기에 충분합니다 . 파일 줄을보고 싶다면을 사용할 수 있습니다 watch wc -l /path/to/file.
Khaled

@Khaled, 나는 몇 줄의 새로운 줄이 추가되었는지를 볼 필요가있다
fl00r

나는 많은 파일들에 대해 정규식과 함께 tail을 사용하고, 한 번에이 파일들에 몇 줄이 추가되는지보고 싶다
fl00r

1
흠. tail -f /var/log/my_process/*.log |grep error > /tmp/error.lines & ; watch wc /tmp/error.lines? 그런 다음 수학하십시오.
cjc

@ cjc 작동합니다, 감사합니다! :) 당신은 그것으로 ab 답변으로해야합니다
fl00r

답변:


24

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

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

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

3

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

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

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


3

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

-1

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

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

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


1) 그것은 OP가 찾고있는 것이 아니며 2) nl펄을 호출 할 필요없이 이것을 할 것입니다.
EEAA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.