journalctl: smette di seguire senza uscire dal cercapersone


10

Se lo faccio:

journalctl -u my-service

quindi Shift-Fa seguire durante il paging, come posso fare (interrupt to abort)senza uscire dal cercapersone?

Con less, in genere solo ^C, ma se lo faccio in journalctl, esce l'intero cercapersone.

Risposte:


6

Si sta utilizzando lessin quel punto, ma ^ C si comporta in modo diverso a causa di come è stato invocato journalctl. I flag che journalctl passa per lessincludere i seguenti valori predefiniti:

 FRSXMK

Di questi, penso che l'opzione "K" si applichi qui:

-K o --quit-on-intr Fa sì che less esca immediatamente (con stato 2) quando viene digitato un carattere di interruzione (di solito ^ C). Normalmente, un carattere di interruzione fa sì che meno fermi qualsiasi cosa stia facendo e ritorni al suo prompt dei comandi. Si noti che l'uso di questa opzione rende impossibile tornare al prompt dei comandi dal comando "F".

Quindi, impostando $ SYSTEMD_LESS nel tuo ambiente e omettendo l'opzione "K" dovresti risolvere il problema, non ha funzionato sul mio test su Ubuntu 16.04:

 SYSTEMD_LESS="FRSXM"journalctl -u nginx

Tuttavia, è possibile ottenere il comportamento desiderato per confermare che il flag K è correlato confrontando il comportamento delle seguenti variazioni:

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

# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK

Ho la stessa impostazione del problema SYSTEMD_LESS, ma ho confermato che cambia i flag inviati less. Puoi controllare trovando il PID lesse facendo hd /proc/<pid>/environ. Cerca la variabile d'ambiente LESS. Sarà lì ma vuoto (normalmente lo è FRSXMK). Puoi anche digitare _Kmeno se stesso per vedere se quel flag è impostato. Normalmente lo è. Se lo passi SYSTEMD_LESS=non lo è. Penso che il processo journalctl stia segnalando al cercapersone quando arriva SIGINT, motivo per cui lessmuore indipendentemente dall'impostazione.

Ecco una bozza di prova del concetto che mostra come aggirare questo problema

0

Ho anche appena sperimentato questa seccatura fastidiosa.
L'impostazione in SYSTEMD_LESSeffetti non funziona perché journalctl invierà un messaggio SIGTERMal cercapersone quando riceve un ^ C.

La mia "soluzione" era usare un alias bash come questo:

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

Ciò sostituisce il cercapersone predefinito e non termina quando si interrompe follow.
La variabile d'ambiente SYSTEMD_COLORSsembra essere l'unico modo per avere colori e continuare a funzionare dopo a SIGINT.

Funziona con la mia installazione di Debian 9.


Hmm, questo ha smesso di seguire. Ma così è stato journalctl | less, potrebbe essere un bug.
cl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.