Solución 1:
pv
es tu comando! P ipe V iewer imprime estadísticas sobre los datos que pasan a través de él y puede ejecutarse en cualquier parte de su tubería, ya que canaliza stdin directamente a stdout. Por ejemplo:
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
El pv
El comando imprime en stderr el número actual de líneas por segundo (el valor predeterminado es bytes por segundo), que, para esta fuente de datos en particular (archivo de registro predeterminado de Nginx), equivale a solicitudes web entrantes por segundo. Solo me importan los conteos, así que canalizo stdout a /dev/null
. También hay opciones como:
-b
(número total de líneas),--average-rate
(tasa promedio desde el inicio), y--timer
(hace un seguimiento de cuánto tiempo ha estado funcionando la tubería).
Si no dice --line-mode
, contará bytes, lo que probablemente no sea lo que desea para los registros del servidor, pero podría ser útil en otros lugares.
Nota final:... | pv -lb > file.txt
se parece mucho a ... | tee file.txt | awk '{printf "\r%lu", NR}'
, que también es útil para contar líneas, pero el pv
la llamada es mucho más corta, aunque el resultado no es tan emocionante:pv
se actualiza cada segundo de forma predeterminada, mientras que awk
el comando se actualiza continuamente.
Solución 2:
Tal vez deberías probar logtop
?
tail -f foobar.log |logtop
Solución 3:
watch -n 3 "wc -l logfile"
página man
ver - ejecutar un programa periódicamente, mostrando la salida a pantalla completaPor defecto, el programa se ejecuta cada 2 segundos; use -n o --interval para especificar un intervalo diferente.