Wie kann ich nur die letzten n Zeilen einer Protokolldatei überwachen?

110

Ich habe eine wachsende Protokolldatei, für die ich nur die letzten 15 Zeilen anzeigen möchte . Folgendes kann ich tun:

tail -n 15 -F mylogfile.txt

Da die Protokolldatei ausgefüllt ist, tailhängt die letzten Zeilen auf dem Display.

Ich suche nach einer Lösung, die nur die letzten 15 Zeilen anzeigt und die Zeilen vor den letzten 15 nach der Aktualisierung entfernt. Würdest du eine Idee haben?

Marc-Olivier Titeux
quelle
28
Ändern Sie die Größe Ihres Terminalfensters auf 15 Zeilen.
Jonathan
1
Das ist auch gut so.
Marc-Olivier Titeux
3
@ Jonathan Genie!
Marsellus Wallace
Konnte Jonathans Kommentar nicht gutheißen, oder er verliert den Geschmack von 15 gutheißen Stimmen
jdero

Antworten:

151

Es könnte ausreichen, watch zu verwenden:

$ watch tail -n 15 mylogfile.txt
William Pursell
quelle
1
Toll! Danke vielmals. Dabei lerne ich auch den Befehl 'watch'.
Marc-Olivier Titeux
1
Beachten Sie, dass diese Lösung nicht funktioniert, wenn die Datei zwischen zwei watchAktualisierungen mehr als 15 Zeilen lang ist . Mit können Sie -ndieses Intervall ändern.
Bfontaine
25

Wenn Sie watch verwenden, versuchen Sie, -ndas Intervall zwischen den einzelnen Aktualisierungen zu steuern.

Somit würde das Folgende alle 2 Sekunden den Schwanz aufrufen

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

während dieser es alle 1 Sekunde abfragt

$ watch -n 1 tail -n 15 mylogfile.txt
Turgon
quelle
13

Sie könnten die Protokolldatei streamen, die weniger ausgeführt wird, und UMSCHALT + F drücken, um die Datei mit weniger zu streamen. $ less mylogfile.txt Drücken Sie dann einfach UMSCHALT + F und es wird gestreamt. Ich denke, es ist praktisch für die Überwachung von Protokolldateien, die aktualisiert werden.

Niklas Rosencrantz
quelle
1
Das ist sehr schön!
Kaiser
8

Vielleicht finden Sie den -dParameter praktisch.

man watch

-d Markiert die Unterschiede zwischen aufeinanderfolgenden Updates. Die Option liest ein optionales Argument, das Änderungen als dauerhaft hervorhebt, und zeigt an, was sich seit der ersten Iteration mindestens einmal geändert hat.

michalzuber
quelle
1
Guter Fang auch!
Marc-Olivier Titeux
0

In Solaris, AIX, HPUX oder UNIX-ähnlichen Umgebungen (einschließlich Linux) können Sie Skripts zum Überwachen von Protokollen oder Ähnlichem verwenden:

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
quelle