만약 내가한다면:
journalctl -u my-service
다음은 Shift-F
페이징 동안, 어떻게 할 따라야 할 (interrupt to abort)
호출기를 종료하지 않고?
을 사용하면 less
일반적으로 그냥 ^C
이지만 journalctl에서 그렇게하면 전체 호출기를 종료합니다.
만약 내가한다면:
journalctl -u my-service
다음은 Shift-F
페이징 동안, 어떻게 할 따라야 할 (interrupt to abort)
호출기를 종료하지 않고?
을 사용하면 less
일반적으로 그냥 ^C
이지만 journalctl에서 그렇게하면 전체 호출기를 종료합니다.
답변:
당신은 된다 사용하여 less
그 시점에서,하지만 ^ C로 인해이 호출 된 방법으로 다르게 행동한다 journalctl
. journalctl이 전달하는 플래그 less
는 다음 기본값 을 포함합니다.
FRSXMK
이 중 "K"옵션이 여기에 적용된다고 생각합니다.
-K 또는 --quit-on-intr 인터럽트 문자 (보통 ^ C)를 입력 할 때 즉시 상태 2가 종료되도록합니다. 일반적으로 인터럽트 문자는 수행중인 작업을 중지하고 명령 프롬프트로 돌아갑니다. 이 옵션을 사용하면 "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
나는 또한이 성가신 단점을 경험했다. ^ ct를 받을 때 journalctl이 호출기에 a 를 보내므로 실제로
설정 SYSTEMD_LESS
이 작동하지 않습니다 SIGTERM
.
내 "솔루션"은 다음과 같은 bash 별칭을 사용하는 것입니다.
alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'
기본 호출기를 무시하고 추적을 중단해도 종료되지 않습니다.
환경 변수 SYSTEMD_COLORS
는 색상을 유지하고 SIGINT
.
이것은 데비안 9 설치에서 작동합니다.
journalctl | less
버그 일 수 있습니다.
SYSTEMD_LESS
을 가지고 있지만 이것이 보낸 플래그 가 변경 되었음을 확인했습니다less
. 당신의 PID를 찾아 확인할 수less
및 일hd /proc/<pid>/environ
. 환경 변수를 찾으십시오LESS
. 비어 있지만 비어 있습니다 (일반적으로입니다FRSXMK
). 또한_K
플래그를 설정했는지 여부를 확인하기 위해 덜 입력 할 수도 있습니다 . 일반적으로 그렇습니다. 통과SYSTEMD_LESS=
하면 그렇지 않습니다. 나는 reportctl 프로세스가 호출 될 때 호출기에 신호를 보내고 있다고 생각하기SIGINT
때문에less
해당 설정에 관계없이 사망합니다.