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?

theShadow89
quelle
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.

David Foerster
quelle
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
Volker Siegel
quelle