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

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

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

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

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

결과의 예를 들어보려면 임의의 서비스에 대해 위 명령을 입력하고 로그 끝까지 스크롤하면 됩니다. 그런 다음 맨 아래부터 마지막 ​​300줄을 복사합니다.

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

답변1

journalctl --unit=my.service -n 100 --no-pager

답변2

끝을 보고 싶다면N그리고로그에 인쇄된 새 메시지를 보려면 다음을 시도하십시오.

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

여기서 는 -n로그 끝 부분에서 보려는 줄 수를 나타내고 -f로그에 대해 추적하려는 변경 사항을 지정합니다.

답변3

오직:

journalctl -u SERVICE_NAME -e

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

-e --pagerend; 암시적 페이징 도구 내에서 로그 끝으로 즉시 이동합니다. 즉, -n 1000은 호출기가 무한 크기의 로그를 버퍼링하지 않도록 보장합니다. 이는 명시적인 -n에 의해 다른 값으로 대체될 수 있으며, -nall은 이 한도를 비활성화합니다.

답변4

tail 명령 솔루션이 제공되었기 때문입니다. sed 명령을 사용해 보았는데 잘 작동했습니다.

다음 명령은 마지막 300줄을 표시합니다.

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 

관련 정보