Jak monitorować tylko ostatnie n wierszy pliku dziennika?

110

Mam rosnący plik dziennika, dla którego chcę wyświetlić tylko ostatnie 15 wierszy. Oto, co wiem, co mogę zrobić:

tail -n 15 -F mylogfile.txt

Gdy plik dziennika jest wypełniony, taildołącza ostatnie wiersze do wyświetlacza.

Szukam rozwiązania, które wyświetla tylko 15 ostatnich linii i pozbywam się linii przed ostatnimi 15 po aktualizacji. Czy masz pomysł

Marc-Olivier Titeux
źródło
28
Zmień rozmiar okna terminala na 15 linii.
Jonathan
1
To też jest dobre.
Marc-Olivier Titeux
3
@Jonathan geniusz!
Marsellus Wallace,
Nie można głosować za komentarzem Jonathana lub traci on smak 15 głosujących
jdero

Odpowiedzi:

151

Wystarczy użyć zegarka:

$ watch tail -n 15 mylogfile.txt
William Pursell
źródło
1
Wspaniały! Wielkie dzięki. W trakcie tego procesu uczę się także polecenia „obserwuj”.
Marc-Olivier Titeux
1
Należy pamiętać, że to rozwiązanie nie działa, jeśli plik rośnie o więcej niż 15 linii między dwiema watchaktualizacjami. Możesz użyć, -naby zmienić ten interwał.
bfontaine,
25

Jeśli używasz zegarka, wypróbuj -nopcję kontrolowania odstępu czasu między każdą aktualizacją.

Zatem następujące wywołałyby ogon co 2 sekundy

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

podczas gdy ten odpytuje go co 1 sekundę

$ watch -n 1 tail -n 15 mylogfile.txt
Turgon
źródło
13

Możesz przesyłać strumieniowo plik dziennika uruchomiony mniej i naciskając SHIFT + F, który przesyła plik strumieniowo przy użyciu mniej. $ less mylogfile.txt Następnie naciśnij SHIFT + F, aby rozpocząć transmisję strumieniową. Myślę, że jest to wygodne do monitorowania aktualizowanych plików dziennika.

Niklas Rosencrantz
źródło
1
To bardzo miłe!
Kaiser
8

Może uznasz ten -dparam za przydatny.

man watch

-d Podkreśl różnice między kolejnymi aktualizacjami. Opcja odczytuje opcjonalny argument, że zmiany wyróżniają się na stałe, pozwalając zobaczyć, co zmieniło się przynajmniej raz od pierwszej iteracji.

Michalzuber
źródło
1
Dobry połów też!
Marc-Olivier Titeux
0

W systemach Solaris, AIX, HPUX lub UNIX (w tym Linux) można używać skryptów do monitorowania dzienników lub czegoś podobnego:

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
João Gerardo
źródło