데비안의 systemctl 서비스에서 마지막 X 줄을 간단히 인쇄하는 방법을 찾고 있습니다. 이 코드를 인쇄 된 최신 로그 항목을 사용하는 스크립트에 설치하고 싶습니다. 이 게시물을 찾았 지만 목적에 맞게 수정할 수 없었습니다.
현재이 코드를 사용하고 있습니다. 로그 파일의 작은 조각을 제공합니다.
journalctl --unit=my.service --since "1 hour ago" -p err
결과가 어떻게 보이는지에 대한 예를 보려면, 서비스에 대해 위의 명령을 입력하고 로그 끝까지 스크롤하십시오. 그런 다음 맨 아래부터 마지막 300 줄을 복사하십시오.
내 생각은 egrep ex를 사용하는 것입니다. egrep -m 700 .
하지만 지금부터 운이 없었습니다.
답변
journalctl --unit=my.service -n 100 --no-pager
답변
출력을 tail
다음으로 파이프하십시오 .
journalctl --unit=my.service | tail -n 300
이 tail
명령은 stdin에 수신 된 마지막 행 (기본적으로 10 줄)을 stdout에 인쇄합니다.
답변
마지막 n 개의 줄 수 를 보고 로그에 인쇄 될 때 새 메시지를 보려면 다음을 시도하십시오.
journalctl -u <service name> -n <number of lines> -f
여기서 -n
로그의 끝에서 보려는 행 수를 나타내며 -f
변경 될 때 로그를 따르도록 지정합니다.
답변
다만:
journalctl -u SERVICE_NAME -e
매개 변수 -e
는 다음을 나타냅니다.
-e –pagerend; 묵시적 호출기 도구 내에서 저널 끝으로 즉시 이동합니다. 이것은 호출기가 제한되지 않은 크기의 로그를 버퍼링하지 않도록 -n 1000을 의미합니다. 이것은 다른 숫자 값을 가진 명시 적 -n으로 재정의 될 수 있지만, -nall은이 제한을 비활성화합니다.
답변
꼬리 명령 솔루션 aleady 제공 이후. 나는 sed commmand를 사용하여 시도하고 잘 작동했습니다.
아래 명령은 마지막 300 줄을 표시합니다
journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba'