나는 이런 식으로하고 싶다 :
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 = 쇼율
답변
빠르고 더러운 방법이 있습니다. 기본적으로 tail
와 watch 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 '$_ = "$. $_"'
각 줄 앞에 줄 번호를 인쇄합니다.