Linux 서비스가 거대한 로그 파일을 생성하고 있습니다.
현재 나는 cron을 사용하여 제어하고 있습니다(X분마다 마지막 X 줄로 줄입니다).
*/5 * * * * root echo "$(tail -n 1000 /var/log/XXX/logger_file.log)" > /var/log/XXX/logger_file.log
이 작업을 보다 깔끔하게 수행할 수 있는 다른 방법이 있습니까?
문자 클리핑이 크기 기반인 경우(즉, 마지막 1024바이트가 유지됨) 클리핑 후 첫 번째 줄이 손상될 수도 있습니다.
물론 서비스 자체를 조용하게 수정할 수는 없습니다.
답변1
로그 회전을 시도해 보셨나요?man logrotate
다음은 도움이 될 수 있는 가이드입니다.logrotate를 사용하여 로그 파일을 관리하는 방법
답변2
curtail은 다음 명령을 사용하여 프로그램 출력 크기를 제한하고 출력의 마지막 XKB(이 경우 200MB)를 유지합니다.
프로그램 실행 | 축소 -s 200M myprogram.log
https://github.com/Comcast/Infinite-File-Curtailer
참고: 저는 위 저장소의 관리자입니다. 솔루션을 공유하는 것뿐입니다.