logrotate daily任务执行成功但日志没有切割
昨天修改了几台nginx的日志清理规则。加入了logroate,但是同样的规则 有些服务器进行了日志切割 有些服务器没有进行日志切割。
/etc/logrotate.d/nginx如下
/data/nginx_logs/*.log
{ #为nginx日志的存储目录,可以根据实际情况进行修改
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 $(cat /data/soft/tengine-2.2.3/logs/nginx.pid 2>/dev/null) 2>/dev/null || :
endscript
}
查看/var/log/cron 发现daily任务已经执行
但是现象是日志并没有进行切割。没有生成压缩包
直接执行logrotate -vf /etc/logrotate.d/nginx 却是没有问题的
那为什么daily执行了 但是没有切割呢。
查看logroate执行文件
/etc/cron.daily/logrotate
查看/var/lib/logrotate/logrotate.status
结论
logrotate自己会判断是否需要进行 日志切割。并不是每一次执行都会进行切割。如果需要定时每天切割,需要自己在crontab里执行logrotate -f
并且日志不是整点切的。这个配置是在/etc/anacrontab
这里写的很清楚START_HOURS_RANGE=3-22,就是在3点到22点之间选择一个时间执行任务