Если я сделаю:
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). Обычно символ прерывания заставляет less остановить все, что он делает, и вернуться в командную строку. Обратите внимание, что использование этой опции делает невозможным возврат в командную строку с помощью команды «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
кажется, это единственный способ сохранить цвета и меньше бегать после SIGINT
.
Это работает с моей установкой Debian 9.