Если я сделаю:
journalctl -u my-service
затем, Shift-F
чтобы следовать во время пейджинга, как мне (interrupt to abort)
без выхода из пейджера?
С less
, я обычно просто ^C
, но если я делаю это в journalctl, он выходит из всего пейджера.
Если я сделаю:
journalctl -u my-service
затем, Shift-F
чтобы следовать во время пейджинга, как мне (interrupt to abort)
без выхода из пейджера?
С less
, я обычно просто ^C
, но если я делаю это в journalctl, он выходит из всего пейджера.
Ответы:
Вы которые , используя less
в этой точке, но ^ C ведет себя по- разному из - за того , как он был вызван journalctl
. Флаги, которые передает journalctl, less
включают следующие значения по умолчанию:
FRSXMK
Из них, я думаю, вариант «K» применим здесь:
-K или --quit-on-intr Вызывает немедленное завершение less (со статусом 2), когда набирается символ прерывания (обычно ^ C). Обычно символ прерывания вызывает меньше, чтобы остановить все, что он делает, и вернуться в командную строку. Обратите внимание, что использование этой опции делает невозможным возврат в командную строку из команды «F».
Итак, установка $ SYSTEMD_LESS в вашей среде и пропуск опции «K» должны решить проблему, это не сработало в моем тесте на Ubuntu 16.04:
SYSTEMD_LESS="FRSXM"journalctl -u nginx
Однако вы можете получить желаемое поведение и подтвердить, что флаг K связан, сравнив поведение следующих вариантов:
# ^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
действительно не работает, так как journalctl отправит SIGTERM
пейджер, когда получит ^ C.
Моим «решением» было использование псевдонима bash:
alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'
Это переопределяет пейджер по умолчанию и не завершается, когда вы прервитесь. Кажется, что
переменная окружения SYSTEMD_COLORS
- единственный способ иметь цвета и меньше работать после a SIGINT
.
Это работает на моей установке Debian 9.
journalctl | less
, может быть ошибка.
SYSTEMD_LESS
, но я подтвердил это действительно изменить флаги , отправленныеless
. Вы можете проверить, найдя PIDless
и сделавhd /proc/<pid>/environ
. Ищите переменную средыLESS
. Это будет там, но пусто (обычно этоFRSXMK
). Вы также можете ввести_K
less самостоятельно, чтобы увидеть, установлен ли этот флаг. Обычно это так. Если вы пройдете,SYSTEMD_LESS=
это не так. Я думаю, что процесс journalctl сигнализирует о том, что пейджер получаетSIGINT
, и поэтомуless
умирает независимо от этого параметра.