it-swarm-eu.dev

Jak monitorovat pouze posledních n řádků souboru protokolu?

Mám rostoucí soubor protokolu, pro který chci zobrazit pouze posledních 15 řádků. Zde vím, co mohu udělat:

tail -n 15 -F mylogfile.txt

Když je soubor protokolu naplněn, připojí tail poslední řádky k displeji.

Hledám řešení, které zobrazuje pouze posledních 15 řádků a zbavuje se řádků před posledních 15 po jeho aktualizaci. Máš nápad?

117

Stačí použít hodinky:

 $ sledovací ocas - v 15 mylogfile.txt 
160
William Pursell

Pokud používáte hodinky, zkuste -n možnost řídit interval mezi každou aktualizací.

Následující by tedy volalo ocas každé 2 sekundy

$ watch -n 2 tail -n 15 mylogfile.txt

zatímco tento jeden dotazuje každou 1 sekundu

$ watch -n 1 tail -n 15 mylogfile.txt
25
Turgon

Mohli byste streamovat méně běžící logfile a stisknout SHIFT + F, čímž se soubor streamuje méně. $ less mylogfile.txt Pak stačí stisknout SHIFT + F a začne se streamovat. Myslím, že je vhodné sledovat soubory protokolu, které se aktualizují.

13
Niklas

Možná najdete -d po ruce.

man watch

-d Zvýraznit rozdíly mezi následnými aktualizacemi. Volba přečte volitelný argument, že změny budou zvýrazněny jako trvalé, což umožní sledovat, co se od první iterace změnilo alespoň jednou.

8
michalzuber

V systémech Solaris, AIX nebo HPUX nebo UNIX (včetně Linuxu) můžete pomocí skriptů sledovat protokoly nebo něco podobného:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
0
João Gerardo