로그 파일에서 초당 SQL 쿼리 수를 계산하려고 시도하고 gred에서 stdout을 일부 명령으로 파이프하여 실시간으로 수행하려고합니다. (저는 성능 테스트를하고 있습니다)
나는 그것을 직접 쓸 수는 있지만 이것이 존재할 것이라고 생각했다.
나는 화장실을 보았지만 이것을 허용하는 옵션을 보지 못했습니다.
액세스 로그에서 꼬리를 파이핑하여 초당 요청 수를 계산하는 데 사용할 수도 있습니다.
로그 파일에서 초당 SQL 쿼리 수를 계산하려고 시도하고 gred에서 stdout을 일부 명령으로 파이프하여 실시간으로 수행하려고합니다. (저는 성능 테스트를하고 있습니다)
나는 그것을 직접 쓸 수는 있지만 이것이 존재할 것이라고 생각했다.
나는 화장실을 보았지만 이것을 허용하는 옵션을 보지 못했습니다.
액세스 로그에서 꼬리를 파이핑하여 초당 요청 수를 계산하는 데 사용할 수도 있습니다.
답변:
pv
당신의 명령입니다! P의 IPE의 V 데이터가 통과하고, 파이프 표준 출력에 직접 이상 stdin을하기 때문에, 파이프 라인 어디에서나 실행할 수 있습니다에 대한 인쇄 통계 iewer. 예를 들면 다음과 같습니다.
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
이 pv
명령은 초당 현재 줄 수 (초당 바이트 수)를 stderr에 인쇄합니다.이 특정 데이터 소스 (Nginx의 기본 로그 파일)의 경우 초당 들어오는 웹 요청과 같습니다. 나는 카운트에만 신경을 쓰므로 stdout을에 파이프 /dev/null
합니다. 다음과 같은 옵션도 있습니다 :
-b
(총 라인 수), --average-rate
(시작 이후 평균 비율) 및 --timer
(파이프가 얼마나 오래 걸 렸는지 추적합니다).이라고 말하지 않으면 --line-mode
바이트 수를 계산합니다. 이는 아마도 서버 로그에는 적합하지 않지만 다른 곳에서는 편리 할 수 있습니다.
마지막 참고 사항 ... | pv -lb > file.txt
은과 비슷 ... | tee file.txt | awk '{printf "\r%lu", NR}'
하며 줄을 계산하는 데 유용 pv
하지만 출력이 그리 흥미롭지는 않지만 호출은 훨씬 짧 pv
습니다. 기본적으로 매초마다 업데이트되지만 awk
명령은 지속적으로 업데이트됩니다.
pv
위해 만들어진 것이 아니기 때문에 awk
물론 가능합니다. twilight stream --timeout 5
Twitter spritzer에서 5 초 동안 샘플링 한 다음 종료 RATE="$(twilight stream --timeout 5 | pv --line-mode --rate --force 2>&1 1>/dev/null | tr -s '\r\n' '\n' | tail -1)"
한 다음 echo $RATE
"[40.8 / s]"( 's 는 더 이상 TTY가 아니므로 추가 --force
플래그에 유의하십시오)와 같은 명령을 생성하는 명령을 가정 합니다 . pv
stderr
> /dev/null
출력이 "블록 청크"되어 더 이상 부드럽게 스트리밍되지 않습니다. 아마도 unbuffer
일부 생산 프로그램에서 파이프 출력을 감지했을 때 출력 버퍼링을 차단하지 않도록 전환해야합니까?
어쩌면 시도해야 logtop
합니까?
tail -f foobar.log |logtop