systemctl 서비스 로그에서 최신 x 줄을 보는 방법


21

데비안의 systemctl 서비스에서 마지막 X 줄을 간단히 인쇄하는 방법을 찾고 있습니다. 이 코드를 인쇄 된 최신 로그 항목을 사용하는 스크립트에 설치하고 싶습니다. 게시물을 찾았 지만 목적에 맞게 수정할 수 없었습니다.

현재이 코드를 사용하고 있습니다. 로그 파일의 작은 조각을 제공합니다.

journalctl --unit=my.service --since "1 hour ago" -p err

결과가 어떻게 보이는지에 대한 예를 보려면, 서비스에 대해 위의 명령을 입력하고 로그 끝까지 스크롤하십시오. 그런 다음 맨 아래부터 마지막 ​​300 줄을 복사하십시오.

내 생각은 egrep ex를 사용하는 것입니다. egrep -m 700 .하지만 지금부터 운이 없었습니다.

답변:



7

출력을 tail다음으로 파이프하십시오 .

journalctl --unit=my.service | tail -n 300

tail명령은 stdin에 수신 된 마지막 행 (기본적으로 10 줄)을 stdout에 인쇄합니다.


1
꼬리를 완전히 잊어 버렸습니다. 좋은 생각입니다. 대단히 감사합니다!
user3191334

5
큰 로그의 경우 테일이 고통스럽게 느려질 수 있습니다. 내장 된 -njournalctrl이 당신이 원하는 것입니다. 예 :journalctl -n 300
드레이크

4

마지막 n 개의 줄 수 보고 로그에 인쇄 될 때 새 메시지를 보려면 다음을 시도하십시오.

journalctl -u <service name> -n <number of lines> -f

여기서 -n로그의 끝에서 보려는 행 수를 나타내며 -f변경 될 때 로그를 따르도록 지정합니다.


4

다만:

journalctl -u SERVICE_NAME -e

매개 변수 -e는 다음을 나타냅니다.

-e --pagerend; 묵시적 호출기 도구 내에서 저널 끝으로 즉시 이동합니다. 이것은 호출기가 제한되지 않은 크기의 로그를 버퍼링하지 않도록 -n 1000을 의미합니다. 이것은 다른 숫자 값을 가진 명시 적 -n으로 재정의 될 수 있지만, -nall은이 제한을 비활성화합니다.


1

꼬리 명령 솔루션 aleady 제공 이후. 나는 sed commmand를 사용하여 시도하고 잘 작동했습니다.

아래 명령은 마지막 300 줄을 표시합니다

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.