Якщо я:
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помирає, незалежно від цього параметра.