journalctl-호출기를 종료하지 않고 팔로우 중지


10

만약 내가한다면:

journalctl -u my-service

다음은 Shift-F페이징 동안, 어떻게 할 따라야 할 (interrupt to abort)호출기를 종료하지 않고?

을 사용하면 less일반적으로 그냥 ^C이지만 journalctl에서 그렇게하면 전체 호출기를 종료합니다.

답변:


6

당신은 된다 사용하여 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

나는 같은 문제 설정 SYSTEMD_LESS을 가지고 있지만 이것이 보낸 플래그 변경 되었음을 확인했습니다 less. 당신의 PID를 찾아 확인할 수 less및 일 hd /proc/<pid>/environ. 환경 변수를 찾으십시오 LESS. 비어 있지만 비어 있습니다 (일반적으로입니다 FRSXMK). 또한 _K플래그를 설정했는지 여부를 확인하기 위해 덜 입력 할 수도 있습니다 . 일반적으로 그렇습니다. 통과 SYSTEMD_LESS=하면 그렇지 않습니다. 나는 reportctl 프로세스가 호출 될 때 호출기에 신호를 보내고 있다고 생각하기 SIGINT때문에 less해당 설정에 관계없이 사망합니다.

여기 해키 개념 증명입니다 당신이 주위를 얻을 수있는 방법을 보여줍니다 gist.github.com/chriskuehl/9ab4c74c19f2f4cb883744171335ac44

0

나는 또한이 성가신 단점을 경험했다. ^ ct를 받을 때 journalctl이 호출기에 a 를 보내므로 실제로
설정 SYSTEMD_LESS이 작동하지 않습니다 SIGTERM.

내 "솔루션"은 다음과 같은 bash 별칭을 사용하는 것입니다.

alias log='SYSTEMD_COLORS=1 journalctl | less -FRSXM'

기본 호출기를 무시하고 추적을 중단해도 종료되지 않습니다.
환경 변수 SYSTEMD_COLORS는 색상을 유지하고 SIGINT.

이것은 데비안 9 설치에서 작동합니다.


흠, 이것은 다음 중지했다. 그러나 journalctl | less버그 일 수 있습니다.
clst
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.