원인 1
/tmp 가 noexec로 마운트 되어있을때 /tmp 에서 스크립트가 실행이 되지 않아 logrotate 되지 않는다.
다음과 같이 logrotate 스크립트 파일을 수정해서 해결
vi /etc/cron.daily/logrotate
#!/bin/sh
TMPDIR=/var/tmp #임시 디렉토리를 /tmp가 아닌 /var/tmp로 한다.
export TMPDIR
/usr/sbin/logrotate /etc/logrotate.conf
TMPDIR=/tmp #/tmp로 원복
export TMPDIR
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
원인 2
/tmp 디렉토리가 noexec로 마운트 되어있고 /var/tmp 디렉토리 또한 /tmp로 링크가 걸려있을 경우
다음과 같이 logrotate 스크립트 파일을 수정해서 해결
vi /etc/cron.daily/logrotate
#!/bin/sh
service syslog stop
/usr/sbin/logrotate -f etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
service syslog start
exit 0
또는 crontab에 다음을 추가하여 주기적으로 syslog restart
01 4 * * * /etc/init.d/syslog restart