Anzeigen der neuesten x Zeilen aus dem SystemCTL-Dienstprotokoll

21

Ich suche nach einer Möglichkeit, einfach die letzten X Zeilen von einem systemctl-Dienst in Debian auszudrucken. Ich möchte diesen Code in einem Skript installieren, das die gedruckten und neuesten Protokolleinträge verwendet. Ich habe diesen Beitrag gefunden, konnte ihn aber nicht für meine Zwecke ändern.

Momentan verwende ich diesen Code, der mir nur einen kleinen Ausschnitt der Protokolldateien gibt:

journalctl --unit=my.service --since "1 hour ago" -p err

Um ein Beispiel dafür zu geben, wie das Ergebnis aussehen soll, geben Sie einfach den obigen Befehl für einen Dienst ein und scrollen Sie bis zum Ende des Protokolls. Kopieren Sie dann die letzten 300 Zeilen von unten.

Meine Idee ist, egrep ex zu verwenden. egrep -m 700 .aber ich hatte seitdem kein glück mehr.

user3191334
quelle

Antworten:

48
journalctl --unit=my.service -n 100 --no-pager
sourcejedi
quelle
7

Leiten Sie die Ausgabe einfach weiter an tail:

journalctl --unit=my.service | tail -n 300

Der tailBefehl druckt die letzten Zeilen (standardmäßig 10), die in stdin bis stdout empfangen wurden.

dr01
quelle
1
Schwanz total vergessen - tolle Idee, vielen Dank!
user3191334
5
Bei großen Stämmen kann der Schwanz schmerzhaft langsam sein. Das eingebaute -nvon journalctrl ist was Sie wollen. zBjournalctl -n 300
Drakes
4

Wenn Sie die letzten n Zeilen anzeigen und neue Nachrichten sehen möchten, während sie im Protokoll gedruckt werden, versuchen Sie Folgendes:

journalctl -u <service name> -n <number of lines> -f

Wo -ngibt die Anzahl der Zeilen an, die Sie am Ende des Protokolls sehen möchten, und -fgibt an, dass Sie dem Protokoll folgen möchten, wenn es sich ändert.

Derek Soike
quelle
4

Gerade:

journalctl -u SERVICE_NAME -e

Parameter -esteht für:

-e --pagerend; Springen Sie sofort zum Ende des Journals im implizierten Pager-Tool. Dies impliziert -n 1000, um sicherzustellen, dass der Pager keine Protokolle mit unbegrenzter Größe puffert. Dies kann mit einem expliziten -n mit einem anderen numerischen Wert überschrieben werden, während -nall diese Begrenzung deaktiviert.

Daniel Kmak
quelle
1

Ich habe es mit sed commmand versucht und es hat gut funktioniert

Unter Befehl werden die letzten 300 Zeilen angezeigt

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
Praveen Kumar BS
quelle