journalctl - pare de seguir sem sair do pager

9

Se eu fizer:

journalctl -u my-service

então um Shift-F a seguir enquanto paginando, como faço para (interrupt to abort) sem sair do pager?

Com less , normalmente apenas ^C , mas se eu fizer isso no journalctl, ele sairá do pager inteiro.

    
por MikeKusold 05.01.2016 / 18:35

2 respostas

6

Você está usando less nesse ponto, mas ^ C está se comportando de maneira diferente devido à forma como foi invocado por journalctl . Os sinalizadores que journalctl passa para less incluem os seguintes padrões:

 FRSXMK

Destes, acho que a opção "K" se aplica aqui:

-K or --quit-on-intr Causes less to exit immediately (with status 2) when an interrupt character (usually ^C) is typed. Normally, an interrupt character causes less to stop whatever it is doing and return to its command prompt. Note that use of this option makes it impossible to return to the command prompt from the "F" command.

Então, definindo $ SYSTEMD_LESS em seu ambiente e omitindo a opção "K" deve resolver o problema, ele não funcionou no meu teste no Ubuntu 16.04:

 SYSTEMD_LESS="FRSXM"journalctl -u nginx

No entanto, você pode obter o comportamento desejado para confirmar se 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
    
por 22.06.2016 / 18:39
0

Eu também experimentei essa peculiaridade chata.
A configuração SYSTEMD_LESS de fato não funciona porque o journalctl enviará um SIGTERM para o pager quando receber um ^ C.

Minha "solução" era usar um apelido bash como este:

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

Isto substitui o pager padrão e não sai quando você interrompe o follow.
A variável de ambiente SYSTEMD_COLORS parece ser a única maneira de ter cores e manter menos a execução após um SIGINT .

Isso funciona na minha instalação do Debian 9.

    
por 12.11.2018 / 17:11