Назад | Перейти на главную страницу

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). Обычно символ прерывания заставляет 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.