Solution 1 :
pv
est votre commande ! P ipe V iewer imprime des statistiques sur les données qui le traversent et peut s'exécuter n'importe où dans votre pipeline, car il dirige directement stdin vers stdout. Par exemple :
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
Le pv
La commande imprime sur stderr le nombre actuel de lignes par seconde (la valeur par défaut est octets par seconde), ce qui, pour cette source de données particulière (le fichier journal par défaut de Nginx), équivaut aux requêtes Web entrantes par seconde. Je ne me soucie que des décomptes, donc je dirige stdout vers /dev/null
. Il existe également des options telles que :
-b
(nombre total de lignes),--average-rate
(taux moyen depuis le début), et--timer
(suivi de la durée du trajet).
Si vous ne dites pas --line-mode
, il comptera les octets, ce qui n'est probablement pas ce que vous voulez pour les journaux de serveur, mais pourrait être utile ailleurs.
Remarque finale :... | pv -lb > file.txt
ressemble beaucoup à ... | tee file.txt | awk '{printf "\r%lu", NR}'
, ce qui est également pratique pour compter les lignes, mais le pv
l'appel est beaucoup plus court, bien que la sortie ne soit pas aussi excitante — pv
met à jour toutes les secondes par défaut, alors que awk
la commande se met à jour en permanence.
Solution 2 :
Peut-être devriez-vous essayer logtop
?
tail -f foobar.log |logtop
Solution 3 :
watch -n 3 "wc -l logfile"
page de manuel
regarder - exécuter un programme périodiquement, en affichant la sortie en plein écranPar défaut, le programme est exécuté toutes les 2 secondes ; utilisez -n ou --interval pour spécifier un intervalle différent.