logrotate无法自动轮询日志的原因

上次介绍使用logrotate轮询nginx日志的方法。配置好之后,连续两天都没发现logrotate轮询nginx的日志,于是开始检查配置文件是否有问题,结果是配置文件一切正常。怀疑是cron没执行,查看了cron的日志,发现有一条Dec 7 04:02:01 www crond[18959]: (root) CMD (run-parts /etc/cron.daily)这样的日志,证明cron在04:02分时已经执行/etc/cron.daily目录下的程序。接着查看/etc/cron.daily/logrotate的内容:

  1. #!/bin/sh
  2.  
  3. /usr/sbin/logrotate /etc/logrotate.conf
  4. EXITVALUE=$?
  5. if [ $EXITVALUE != 0 ]; then
  6.     /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
  7. fi
  8. exit 0

没有发现异常,系统日志等都是由这个脚本轮询的,一切运行正常,脚本应该就没问题。直接执行命令/usr/sbin/logrotate /etc/logrotate.conf系统日志是正常轮询了,但nginx日志却没反应。
再man logrotate看下说明发现一个选项-f (–force),大概意思是:强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然。
那应该有可能是logroate认为nginx日志太小,不进行轮询,但我们需要轮询,加-f选项即可。即

  1. /usr/sbin/logrotate -f /etc/logrotate.conf

不清楚logrotate轮询的条件是什么,还要强制轮询才行,搞不懂。

发布于:2019-10-15 14:16:02