journalctl - arrête de suivre sans quitter le pager

10

Si je fais:

journalctl -u my-service

puis a Shift-Fsuivre en paginant, comment faire (interrupt to abort)sans sortir du pager?

Avec less, je fais généralement juste ^C, mais si je fais ça dans journalctl, ça quitte tout le pager.

MikeKusold
la source

Réponses:

6

Vous êtes utilisez lessà ce moment - là, mais ^ C se comporte différemment en raison de la façon dont il a été invoqué journalctl. Les indicateurs que journalctl passe pour lessinclure les valeurs par défaut suivantes:

 FRSXMK

Parmi ceux-ci, je pense que l'option "K" s'applique ici:

-K ou --quit-on-intr Provoque la sortie immédiate de less (avec le statut 2) lorsqu'un caractère d'interruption (généralement ^ C) est tapé. Normalement, un caractère d'interruption provoque moins d'arrêter tout ce qu'il fait et retourner à son invite de commande. Notez que l'utilisation de cette option rend impossible de revenir à l'invite de commande à partir de la commande "F".

Donc, définir $ SYSTEMD_LESS dans votre environnement et omettre l'option "K" devrait résoudre le problème, cela n'a pas fonctionné sur mon test sur Ubuntu 16.04:

 SYSTEMD_LESS="FRSXM"journalctl -u nginx

Cependant, vous pouvez obtenir le comportement souhaité pour confirmer que l'indicateur K est lié en comparant le comportement des variantes suivantes:

# ^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
la source
J'ai le même réglage de problème SYSTEMD_LESS, mais je confirme cela ne change les drapeaux envoyés less. Vous pouvez vérifier en trouvant le PID lesset en faisant hd /proc/<pid>/environ. Recherchez la variable d'environnement LESS. Il sera là mais vide (normalement c'est le cas FRSXMK). Vous pouvez également taper _Kmoins lui-même pour voir si cet indicateur est défini. C'est normalement le cas. Si vous réussissez, SYSTEMD_LESS=ce n'est pas le cas. Je pense que le processus journalctl signale le pager quand il arrive SIGINT, c'est pourquoi lessmeurt quel que soit ce paramètre.
Voici une preuve de concept hacky qui montre comment vous pouvez contourner cela: gist.github.com/chriskuehl/9ab4c74c19f2f4cb883744171335ac44
0

Je viens aussi de vivre cette bizarrerie ennuyeuse.
La configuration en SYSTEMD_LESSeffet ne fonctionne pas car journalctl enverra un SIGTERMau pager quand il recevra un ^ C.

Ma "solution" consistait à utiliser un alias bash comme celui-ci:

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

Cela remplace le pager par défaut et ne se ferme pas lorsque vous interrompez le suivi.
La variable d'environnement SYSTEMD_COLORSsemble être le seul moyen d'avoir des couleurs et de continuer à fonctionner moins après a SIGINT.

Cela fonctionne sur mon installation Debian 9.

clst
la source
Hmm, cela a cessé de suivre. Mais il en a journalctl | lesspeut-être été un.
2018