journalctl - hört auf zu folgen, ohne den Pager zu verlassen

10

Wenn ich mache:

journalctl -u my-service

Shift-FWie kann ich dann beim Paging folgen, (interrupt to abort)ohne den Pager zu verlassen?

Mit less, normalerweise nur ^C, aber wenn ich das in journalctl mache, wird der gesamte Pager beendet.

MikeKusold
quelle

Antworten:

6

Sie sind mit lessan diesem Punkt, aber ^ C verhält sich anders darauf zurückzuführen, wie es durch aufgerufen wurde journalctl. Die Flags, die journalctl übergibt, lessenthalten die folgenden Standardeinstellungen:

 FRSXMK

Ich denke, dass hier die Option "K" gilt:

-K oder --quit-on-intr Bewirkt, dass weniger sofort beendet wird (mit Status 2), wenn ein Interrupt-Zeichen (normalerweise ^ C) eingegeben wird. Normalerweise bewirkt ein Interrupt-Zeichen, dass weniger das, was es tut, stoppt und zur Eingabeaufforderung zurückkehrt. Beachten Sie, dass die Verwendung dieser Option es unmöglich macht, vom Befehl "F" zur Eingabeaufforderung zurückzukehren.

Das Setzen von $ SYSTEMD_LESS in Ihrer Umgebung und das Weglassen der Option "K" sollte das Problem beheben. Bei meinem Test unter Ubuntu 16.04 funktionierte dies nicht:

 SYSTEMD_LESS="FRSXM"journalctl -u nginx

Sie können jedoch das gewünschte Verhalten erhalten, um zu bestätigen, dass das K-Flag in Beziehung steht, indem Sie das Verhalten der folgenden Variationen vergleichen:

# ^C after Shift-F does not completely quit
journalctl -u nginx | less -FRSXM

# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK
Mark Stosberg
quelle
Ich habe die gleiche Problem Einstellung SYSTEMD_LESS, aber ich bestätigte dies nicht die Flags gesendet ändern less. Sie können dies überprüfen, indem Sie die PID von lessund tun hd /proc/<pid>/environ. Suchen Sie nach der Umgebungsvariablen LESS. Es wird dort sein, aber leer (normalerweise ist es FRSXMK). Sie können auch _Kweniger selbst eingeben, um festzustellen, ob dieses Flag gesetzt ist. Normalerweise ist es so. Wenn Sie bestehen SYSTEMD_LESS=, ist es nicht. Ich denke, der journalctl-Prozess signalisiert dem Pager, wenn er empfangen wird SIGINT, weshalb er lessunabhängig von dieser Einstellung stirbt.
Hier ist ein hackiger Proof-of-Concept, der zeigt, wie Sie dies umgehen
0

Ich habe auch gerade diese nervige Eigenart erlebt.
Die Einstellung SYSTEMD_LESSfunktioniert in der Tat nicht, da journalctl ein SIGTERMan den Pager sendet , wenn es ein ^ C empfängt.

Meine "Lösung" bestand darin, einen Bash-Alias ​​wie diesen zu verwenden:

alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'

Dies überschreibt den Standard-Pager und wird nicht beendet, wenn Sie die Verfolgung unterbrechen.
Die Umgebungsvariable SYSTEMD_COLORSscheint die einzige Möglichkeit zu sein, Farben zu haben und nach a weniger zu laufen SIGINT.

Dies funktioniert bei meiner Debian 9-Installation.

clst
quelle
Hmm, das hörte auf zu folgen. Aber das journalctl | lesskönnte auch ein Fehler sein.
Clst