Řešení 1:
pv
je váš příkaz! P ipe V iewer tiskne statistiky o datech, která jím procházejí, a může běžet kdekoli ve vašem kanálu, protože směruje stdin přímo do stdout. Například:
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
pv
příkaz vypíše do stderr aktuální počet řádků za sekundu (výchozí je bajtů za sekundu), který se pro tento konkrétní zdroj dat (výchozí soubor protokolu Nginx) rovná příchozím webovým požadavkům za sekundu. Zajímají mě pouze počty, takže stdout převádím do /dev/null
. Existují také možnosti jako:
-b
(celkový počet řádků),--average-rate
(průměrná míra od spuštění) a--timer
(sleduje, jak dlouho potrubí jelo).
Pokud neřeknete --line-mode
, bude počítat bajty, což pravděpodobně není to, co chcete pro protokoly serveru, ale mohlo by se hodit jinde.
Závěrečná poznámka:... | pv -lb > file.txt
je hodně podobný ... | tee file.txt | awk '{printf "\r%lu", NR}'
, což je také užitečné pro počítání řádků, ale pv
volání je mnohem kratší, i když výstup není tak vzrušující — pv
ve výchozím nastavení se aktualizuje každou sekundu, zatímco awk
příkaz se průběžně aktualizuje.
Řešení 2:
Možná byste měli zkusit logtop
?
tail -f foobar.log |logtop
Řešení 3:
watch -n 3 "wc -l logfile"
manuálová stránka
sledovat - periodicky spouštět program, zobrazující výstup na celou obrazovku Ve výchozím nastavení se program spouští každé 2 sekundy; použijte -n nebo --interval k zadání jiného intervalu.