Zeigen Sie nur die neuen Einträge in einer wachsenden Protokolldatei an


20
tail -f x.log

Ich verwende diesen Befehl, um eine wachsende Protokolldatei in der Eingabeaufforderung anzuzeigen.

Ich interessiere mich nur für die Protokollzeilen, die nach dem Ausführen in die Datei geschrieben werden, tail -fund nicht für die Protokolle, die zuvor in die Datei geschrieben wurden tail -f. Aber tail -fBefehl beim Start, nimmt die letzten 10 Zeilen und zeigt es an.

Das verwirrt mich manchmal, wenn diese Protokolle frisch generiert werden (oder) es sich um alte Protokolle handelt?

Wie kann ich tail -f so anpassen, dass nur die neuen Einträge ausgegeben werden?

logs  tail 

Antworten:


31

Du kannst es versuchen:

tail -n0 -f x.log

Aus der Manpage :

-n, --lines = K gibt
die letzten K Zeilen anstelle der letzten 10 aus; Oder geben Sie mit -n + K Zeilen aus, die mit Kth beginnen


12

Sie können die -n0Option verwenden, um 0 Zeilen anzuzeigen. So

tail -n0 -f some.log

2

Sie können auch den lessBefehl like verwenden

  1. less file_name.log (Die Protokolldatei wird geöffnet und zeigt die erste Seite der Protokolldatei an.)
  2. drücke shift+ f(um wie tail -f zu handeln)
  3. Für den Fall, dass Sie nach einem Schlüsselwort in der Protokolldatei suchen müssen. Drücken Sie ctrl+ c, um den Endmodus zu verlassen und nach dem Schlüsselwort als /Schlüsselwort und ?Schlüsselwort zu suchen .

Hiermit werden nicht nur die neuen Einträge in einer wachsenden Protokolldatei angezeigt.
Spooky

0

Ich habe diesen Ansatz erstellt, als ich Einträge im Docker-Container überwachen musste:

LOG_COUNT=0
LOGS=/var/logs/your_logs

function HEART_BEAT() {
    LOG_COUNT_NEW=$(wc -l $LOGS | awk '{ print $1 }')
    tail -n $(( $LOG_COUNT_NEW - $LOG_COUNT )) $LOGS
    LOG_COUNT=$LOG_COUNT_NEW
}

Hoffe das hilft!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.