Si je fais:
journalctl -u my-service
puis a Shift-F
suivre 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.
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 less
inclure 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
SYSTEMD_LESS
, mais je confirme cela ne change les drapeaux envoyésless
. Vous pouvez vérifier en trouvant le PIDless
et en faisanthd /proc/<pid>/environ
. Recherchez la variable d'environnementLESS
. Il sera là mais vide (normalement c'est le casFRSXMK
). Vous pouvez également taper_K
moins 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 arriveSIGINT
, c'est pourquoiless
meurt quel que soit ce paramètre.Je viens aussi de vivre cette bizarrerie ennuyeuse.
La configuration en
SYSTEMD_LESS
effet ne fonctionne pas car journalctl enverra unSIGTERM
au pager quand il recevra un ^ C.Ma "solution" consistait à utiliser un alias bash comme celui-ci:
Cela remplace le pager par défaut et ne se ferme pas lorsque vous interrompez le suivi.
La variable d'environnement
SYSTEMD_COLORS
semble être le seul moyen d'avoir des couleurs et de continuer à fonctionner moins après aSIGINT
.Cela fonctionne sur mon installation Debian 9.
la source
journalctl | less
peut-être été un.