초당 파일에 추가된 라인 수를 실시간으로 표시하는 방법은 무엇입니까?

초당 파일에 추가된 라인 수를 실시간으로 표시하는 방법은 무엇입니까?

여러 로그 파일이 있는 디렉터리를 사용하고 있습니다.

각 로그 파일에 기록된 줄 수의 실행 횟수(주기적으로 업데이트됨)를 표시하려고 합니다.

파일 이름별로 색인화되어 주기당(예: 초당) 각 파일에 기록된 줄 수를 확인해야 합니다.

보너스 포인트의 경우 행은 초당 작성된 행 수의 내림차순으로 정렬되어야 합니다.

반드시 그런 것을 사용할 필요는 없습니다 ncurses(예: 상단). 매 주기(예: 매초)마다 업데이트를 작성하면 괜찮습니다.

이 작업을 어떻게 수행합니까?


내 솔루션을 답변으로 포함했지만 이 작업을 수행하는 더 좋은 방법이 있을 것 같습니다... 더 나은 방법을 배우고 싶습니다!

답변1

watch나는 (읽기 ) 다음을 사용할 것이다 man watch:

watch --differences wc -l *.log

답변2

강제 Unix 도구만 사용하는 무차별 대입 방법:

while :; do wc -l *; echo "-"; sleep 1; done |
awk '/^-/{print; next} {print $2, $1, $1-prev[$2]; prev[$2]=$1}'

위의 코드는 매초마다 각 파일 이름을 인쇄한 다음 파일의 현재 줄 수와 마지막 반복 이후 줄 수의 변경 사항을 인쇄합니다. 모든 파일의 총 라인 수에 대해 동일한 작업이 수행됩니다.

awk 출력을 적합하게 조정하려면 파이프를 통해 원하는 대로 정렬하고 각 호출 앞에 a를 추가할 수 있습니다 sort -k3,3n(또는 awk가 a 다음의 첫 번째 줄을 읽을 때마다 awk에서 관련 이스케이프 시퀀스를 인쇄합니다). 각 루프의 전류 출력.tput clear;wc -l-

답변3

내가 생각할 수 있는 가장 좋은 방법은 다음 과 tail -f함께 사용하는 것입니다.awklogtop:

tail -f * | awk '/^==> / {a=substr($0, 5, length-8); next} {print a}' | logtop

결과는 다음과 같습니다. 여기에 이미지 설명을 입력하세요.

관련 정보