Wenn ich mache:
journalctl -u my-service
Shift-F
Wie 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.
Wenn ich mache:
journalctl -u my-service
Shift-F
Wie 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.
Antworten:
Sie sind mit less
an diesem Punkt, aber ^ C verhält sich anders darauf zurückzuführen, wie es durch aufgerufen wurde journalctl
. Die Flags, die journalctl übergibt, less
enthalten 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
Ich habe auch gerade diese nervige Eigenart erlebt.
Die Einstellung SYSTEMD_LESS
funktioniert in der Tat nicht, da journalctl ein SIGTERM
an 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_COLORS
scheint die einzige Möglichkeit zu sein, Farben zu haben und nach a weniger zu laufen SIGINT
.
Dies funktioniert bei meiner Debian 9-Installation.
journalctl | less
könnte auch ein Fehler sein.
SYSTEMD_LESS
, aber ich bestätigte dies nicht die Flags gesendet ändernless
. Sie können dies überprüfen, indem Sie die PID vonless
und tunhd /proc/<pid>/environ
. Suchen Sie nach der UmgebungsvariablenLESS
. Es wird dort sein, aber leer (normalerweise ist esFRSXMK
). Sie können auch_K
weniger selbst eingeben, um festzustellen, ob dieses Flag gesetzt ist. Normalerweise ist es so. Wenn Sie bestehenSYSTEMD_LESS=
, ist es nicht. Ich denke, der journalctl-Prozess signalisiert dem Pager, wenn er empfangen wirdSIGINT
, weshalb erless
unabhängig von dieser Einstellung stirbt.