[logrotate] 실행 결과 확인

by 스뎅(thDeng) on

logrotate를 디버깅으로 실행해서 어떤 파일이 어떻게 rotate될지 예상을 할 수는 있지만, 오늘 언제 어떻게 실행됐는지 결과를 확인하기는 어렵다.

State file

logrotate의 state 파일을 확인하면, (아주 간단한 내용이긴 하지만) 실행 대상 별로 가장 최근에 언제 실행됐는지 정도를 확인할 수 있다.

$ cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/usr/local/nginx/logs/error_log" 2018-12-21-3:34:2
"/var/log/yum.log" 2018-1-1-3:6:1
"/usr/local/nginx/logs/front_error_log" 2018-12-20-3:42:1
"/usr/local/nginx/logs/front_access_log" 2018-12-21-3:34:2
"/var/tomcat/*/logs/catalina.out" 2018-12-21-3:0:0
"/var/log/spooler" 2018-12-17-3:11:1
"/var/log/maillog" 2018-12-17-3:11:1

state 파일 위치는 default가 /var/lib/logrotate/logrotate.status이지만, 아래처럼 -s--state 옵션으로 변경할 수 있다.

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

Logging of logrotate

그리고 logrotate는 자체적으로 로그를 생성하지 않는다. 만일 로그를 남기고 싶다면 logrotate가 등록된 cron 스크립트 파일을 변경해서 남기면 된다. logrotate를 설치하면, 보통 daily cron에 실행 스크립트가 생긴다. 요 cron 스크립트를 잘 수정하면 좋을 것 같다.

$ sudo cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License