Soluzione 1:
pv
è il tuo comando! P ipe V iewer stampa le statistiche sui dati che lo attraversano e può essere eseguito ovunque nella tua pipeline, dal momento che reindirizza stdin direttamente a stdout. Ad esempio:
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
Il pv
Il comando stampa su stderr il numero corrente di righe al secondo (l'impostazione predefinita è byte al secondo), che, per questa particolare origine dati (il file di registro predefinito di Nginx), equivale alle richieste Web in arrivo al secondo. Mi interessa solo il conteggio, quindi convoglio lo stdout in /dev/null
. Ci sono anche opzioni come:
-b
(numero totale di righe),--average-rate
(tasso medio dall'inizio) e--timer
(tiene traccia di quanto tempo ha funzionato il tubo).
Se non dici --line-mode
, conterà i byte, che probabilmente non è ciò che desideri per i log del server, ma potrebbe essere utile altrove.
Nota finale:... | pv -lb > file.txt
è molto simile a ... | tee file.txt | awk '{printf "\r%lu", NR}'
, utile anche per contare le righe, ma il pv
call è molto più breve, anche se l'output non è altrettanto entusiasmante — pv
si aggiorna ogni secondo per impostazione predefinita, mentre quel awk
il comando si aggiorna continuamente.
Soluzione 2:
Forse dovresti provare logtop
?
tail -f foobar.log |logtop
Soluzione 3:
watch -n 3 "wc -l logfile"
pagina man
watch - esegue periodicamente un programma, mostrando l'output a schermo interoPer impostazione predefinita, il programma viene eseguito ogni 2 secondi; usa -n o --interval per specificare un intervallo diverso.