logrotate日志切割不执行问题

业务服务中写的日志切割功能没有执行,具体排查流程如下:

1、先看下配置文件是否正确,可以先手动执行

1
logrotate /etc/logrotate.conf

2. 看下logrotate执行的结果

1
2
3
4
5
6
[root@p45282v ~]# cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/supervisor/kafka_consumer_stderr.log" 2021-6-28-3:34:26
"/var/log/supervisor/gunicorn_web-stderr---supervisor.log" 2021-6-27-3:7:26
"/var/log/supervisor/match_log_stderr.log" 2021-6-28-3:34:26
"/var/log/supervisor/root_service_stderr.log" 2021-6-27-3:7:26

3、logrotate是crontab执行的,涉及到以下俩个文件

1
2
3
4
5
6
7
8
9
# 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

有的服务还会在crontab设置定时执行,我的没有这个文件。

1
2
cat /etc/cron.d/nginx 
55 23 * * * root sleep `perl -e "print int(rand(120))"` && /usr/sbin/logrotate -v -f /usr/local/nginx/conf/logrotate.conf

4. 手工执行

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

小结

可以手工添加定时任务解决问题。