Ci są przy użyciu lessw tym momencie, ale ^ C zachowuje się inaczej ze względu na to, jak został wywołany przez journalctl. Flagi, które przekazuje dziennik, lesszawierają następujące wartości domyślne:
FRSXMK
Spośród nich myślę, że ma tutaj zastosowanie opcja „K”:
-K lub --quit-on-intr
Powoduje, że less kończy natychmiast (ze statusem 2), gdy zostanie wpisany znak przerwania (zwykle ^ C). Zwykle znak przerwania powoduje, że less przerywa to, co robi, i wraca do wiersza poleceń. Zauważ, że użycie tej opcji uniemożliwia powrót do wiersza poleceń z polecenia „F”.
Tak więc ustawienie $ SYSTEMD_LESS w twoim środowisku i pominięcie opcji „K” powinno rozwiązać problem, nie działało to w moim teście na Ubuntu 16.04:
SYSTEMD_LESS="FRSXM"journalctl -u nginx
Można jednak uzyskać pożądane zachowanie, aby potwierdzić, że flaga K jest powiązana, porównując zachowanie następujących odmian:
# ^C after Shift-F does not completely quit
journalctl -u nginx | less -FRSXM
# ^C after Shift-F completely quits
journalctl -u nginx | less -FRSXMK
Mam takie same ustawienia problemu SYSTEMD_LESS, ale potwierdziłem, że to zmienia flagi wysłane do less. Możesz to sprawdzić, znajdując PID lessi wykonując czynności hd /proc/<pid>/environ. Poszukaj zmiennej środowiskowej LESS. Będzie tam, ale pusty (zwykle jest FRSXMK). Możesz także wpisać _Kless w celu sprawdzenia, czy ta flaga jest ustawiona. Zwykle tak jest. Jeśli zdasz, SYSTEMD_LESS=nie jest. Myślę, że proces Journalctl sygnalizuje pagerowi, kiedy się pojawi SIGINT, dlatego lessumiera niezależnie od tego ustawienia.
Właśnie doświadczyłem tego irytującego dziwactwa.
Ustawienie SYSTEMD_LESSrzeczywiście nie działa, ponieważ dziennik wyśle a SIGTERMdo pagera po otrzymaniu ^ C.
Moim „rozwiązaniem” było użycie aliasu bash takiego jak ten:
alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'
Zastępuje to domyślny pager i nie kończy działania po przerwaniu śledzenia. Wydaje się, że
zmienna środowiskowa SYSTEMD_COLORSjest jedynym sposobem, aby mieć kolory i mniej działać po SIGINT.
SYSTEMD_LESS
, ale potwierdziłem, że to zmienia flagi wysłane doless
. Możesz to sprawdzić, znajdując PIDless
i wykonując czynnościhd /proc/<pid>/environ
. Poszukaj zmiennej środowiskowejLESS
. Będzie tam, ale pusty (zwykle jestFRSXMK
). Możesz także wpisać_K
less w celu sprawdzenia, czy ta flaga jest ustawiona. Zwykle tak jest. Jeśli zdasz,SYSTEMD_LESS=
nie jest. Myślę, że proces Journalctl sygnalizuje pagerowi, kiedy się pojawiSIGINT
, dlategoless
umiera niezależnie od tego ustawienia.Właśnie doświadczyłem tego irytującego dziwactwa.
Ustawienie
SYSTEMD_LESS
rzeczywiście nie działa, ponieważ dziennik wyśle aSIGTERM
do pagera po otrzymaniu ^ C.Moim „rozwiązaniem” było użycie aliasu bash takiego jak ten:
Zastępuje to domyślny pager i nie kończy działania po przerwaniu śledzenia. Wydaje się, że
zmienna środowiskowa
SYSTEMD_COLORS
jest jedynym sposobem, aby mieć kolory i mniej działać poSIGINT
.Działa to w mojej instalacji Debian 9.
źródło
journalctl | less
może być błąd.