Если я сделаю:
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). Вы также можете ввести_Kless самостоятельно, чтобы увидеть, установлен ли этот флаг. Обычно это так. Если вы пройдете,SYSTEMD_LESS=это не так. Я думаю, что процесс journalctl сигнализирует о том, что пейджер получаетSIGINT, и поэтомуlessумирает независимо от этого параметра.