pv
é seu comando! P ipê V iewer imprime estatísticas sobre os dados que passa através dele, e pode ser executado em qualquer lugar no seu pipeline, uma vez que tubos stdin diretamente sobre a stdout. Por exemplo:
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
O pv
comando imprime para stderr o número atual de linhas por segundo (o padrão é bytes por segundo), que, para essa fonte de dados específica (arquivo de log padrão do Nginx), equivale a solicitações da Web recebidas por segundo. Eu só me preocupo com as contagens, então entro em pânico /dev/null
. Existem também opções como:
-b
(número total de linhas),
--average-rate
(taxa média desde o início) e
--timer
(rastreia quanto tempo o cano está funcionando).
Caso contrário --line-mode
, ele contará bytes, o que provavelmente não é o que você deseja para os logs do servidor, mas pode ser útil em outros lugares.
Nota final: ... | pv -lb > file.txt
é muito parecida ... | tee file.txt | awk '{printf "\r%lu", NR}'
, o que também é útil para contar linhas, mas a pv
chamada é muito mais curta, embora a saída não seja tão interessante - pv
atualiza a cada segundo por padrão, enquanto esse awk
comando é atualizado continuamente.