End-tail -f nach dem Drucken von n Zeilen


10

Ich habe folgendes.

  1. Ein Java-Prozess, der Protokolle in eine Datei schreibt
  2. Ein Shell-Skript, das den Java-Prozess startet.

Ich muss die Protokolldatei nach dem Start des Java-Prozesses lesen, um den korrekten Start zu überprüfen.

Ich habe es versucht, tail -faber es bleibt für immer hängen. Ich muss tailnach dem Drucken von n Zeilen anhalten. -nGibt es eine ähnliche Option für vorherige Linien?


1
Wird Ihre Protokolldatei jedes Mal bereinigt, nachdem das Shell-Skript den Java-Prozess ausgeführt hat?
c0rp

Ich benutze log4j mit Append-Modus, um eine Protokolldatei zu schreiben. Es wird gedreht, nachdem die Dateidimension auf 10 MB angehoben wurde.
theShadow89

Antworten:


24

Sie können die Ausgabe des tail -fan headdie Menge der Linien gezeigt zu begrenzen:

tail -f [PATH] | head -n 100

um insgesamt nur 100 Zeilen anzuzeigen.


7

Nur neue Zeilen

Bei der Ebene stammen tail -fdie ersten 10 Zeilen aus der Datei, wie sie bereits vorhanden ist:

tail -f file.log | head -30

schreibt 10 Zeilen, log.txtwenn es ausgeführt wird, und 20 (n-10) Zeilen, die später hinzugefügt werden.

Bei einer Protokolldatei verwenden Sie normalerweise -f( --follow), um die in Zukunft geschriebenen Zeilen anzuzeigen.

Um nur die 30 Zeilen anzuzeigen, die nach dem tailStart geschrieben wurden, beschränken Sie die anfängliche Ausgabe auf 0:

tail -f -n0 file.log | head -30
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.