Se eu fizer:
journalctl -u my-service
em seguida, um Shift-F
a seguir ao paginação, como eu (interrupt to abort)
sem sair do pager?
Com less
, eu normalmente apenas ^C
, mas se eu fizer isso no journalctl, ele sairá do pager inteiro.
Se eu fizer:
journalctl -u my-service
em seguida, um Shift-F
a seguir ao paginação, como eu (interrupt to abort)
sem sair do pager?
Com less
, eu normalmente apenas ^C
, mas se eu fizer isso no journalctl, ele sairá do pager inteiro.
Respostas:
Você está usando less
nesse ponto, mas ^ C está se comportando de maneira diferente devido à forma como foi chamado journalctl
. Os sinalizadores que journalctl passa para less
incluir os seguintes padrões:
FRSXMK
Destes, acho que a opção "K" se aplica aqui:
-K ou --quit-on-intr Faz com que menos saia imediatamente (com status 2) quando um caractere de interrupção (geralmente ^ C) é digitado. Normalmente, um caractere de interrupção faz com que menos pare o que está fazendo e retorne ao prompt de comando. Observe que o uso dessa opção torna impossível retornar ao prompt de comando a partir do comando "F".
Portanto, definir $ SYSTEMD_LESS no seu ambiente e omitir a opção "K" deve resolver o problema, não funcionou no meu teste no Ubuntu 16.04:
SYSTEMD_LESS="FRSXM"journalctl -u nginx
No entanto, você pode obter o comportamento que deseja confirmar que o sinalizador K está relacionado comparando o comportamento das seguintes variações:
# ^C after Shift-F does not completely quit
journalctl -u nginx | less -FRSXM
# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK
Eu também apenas experimentei essa peculiaridade irritante.
A configuração SYSTEMD_LESS
realmente não funciona porque o journalctl envia um SIGTERM
para o pager quando recebe um ^ C.
Minha "solução" era usar um alias do bash assim:
alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'
Isso substitui o pager padrão e não sai quando você interrompe o procedimento.
A variável de ambiente SYSTEMD_COLORS
parece ser a única maneira de ter cores e manter menos execução após a SIGINT
.
Isso funciona na minha instalação do Debian 9.
journalctl | less
, pode ser um bug.
SYSTEMD_LESS
, mas eu confirmou esta não alterar as bandeiras enviados paraless
. Você pode verificar encontrando o PIDless
e o que está fazendohd /proc/<pid>/environ
. Procure a variável de ambienteLESS
. Ele estará lá, mas vazio (normalmente estáFRSXMK
). Você também pode digitar_K
menos para ver se esse sinalizador está definido. Normalmente é. Se você passarSYSTEMD_LESS=
, não é. Eu acho que o processo journalctl está sinalizando o pager quando é recebidoSIGINT
, e é por isso queless
morre independentemente dessa configuração.