Якщо я:
journalctl -u my-service
потім a Shift-F
для під час підкачки, як мені (interrupt to abort)
не вийти з пейджера?
З less
, я зазвичай просто ^C
, але якщо я роблю це в journalctl, він виходить весь пейджер.
Якщо я:
journalctl -u my-service
потім a Shift-F
для під час підкачки, як мені (interrupt to abort)
не вийти з пейджера?
З less
, я зазвичай просто ^C
, але якщо я роблю це в journalctl, він виходить весь пейджер.
Відповіді:
Ви які , використовуючи less
в цій точці, але ^ C поводиться по- різному з - за того , як він був викликаний journalctl
. Прапори, які проходить journalctl, less
містять такі типові настройки :
FRSXMK
З них я думаю, що тут застосовується варіант "K":
-K або --quit-on-intr Створює менше виходу негайно (зі статусом 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
є єдиним способом мати кольори та тримати менше роботи після SIGINT
.
Це працює на моїй установці Debian 9.
journalctl | less
, може бути помилка.
SYSTEMD_LESS
, але я підтвердив це дійсно змінити прапори , відправленіless
. Ви можете перевірити, знайшовши PIDless
та виконайте цеhd /proc/<pid>/environ
. Шукайте змінну середовищаLESS
. Він буде там, але порожній (зазвичай цеFRSXMK
). Ви також можете ввести_K
менше себе, щоб побачити, чи встановлений цей прапор. Зазвичай це так. Якщо ти передаєш,SYSTEMD_LESS=
це не так. Я думаю, що процес журналу сигналізує про пейджер, коли він отримуєSIGINT
, через щоless
помирає, незалежно від цього параметра.