logrotate不会自动旋转我的日志

我有两个不同的(i386 v AMD)Debian盒,并有相同的问题。 logrotate不会自动旋转我的日志。 它工作正常,当我强制手动像

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

但对我来说并不好

设置没有被修改(至less我没有修改它们),AMD的盒子是一个新的安装,但不会做它的工作。

如果您发现了类似的问题,请帮助我。

更新(某些服务器输出):

logrotate -d http://pastebin.com/e6AshtGq

ls -l /var/log http://pastebin.com/Y2A4Li59

cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr

ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM

检查你的logrotate是由cron运行的。

编辑:

从评论讨论 – 看来,cron不能正常工作。 我在我的crontab没有用户的cronjob,但只有当我重新启动cron守护进程

我的Ubuntu和Centos系统有一个/etc/cron.daily/logrotate文件,其内容是

 #!/bin/sh test -x /usr/sbin/logrotate || exit 0 /usr/sbin/logrotate /etc/logrotate.conf 

我的/ etc / crontab具有以下行来运行日常工作

 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily 

我有一个类似的问题,但crontab正在工作,并为logrotate一些日志目录工作,但一些它没有。 当我试图手动运行logrotate时,出现了一些错误信息。

 user@server:/var/log/apache2$ sudo /usr/sbin/logrotate -f /etc/logrotate.conf error: error creating output file /var/log/apache2/access.log.1.gz: File exists error: error creating output file /var/log/apache2/error.log.1.gz: File exists ... 

所有*.1.gz文件的大小都是0.我手动删除了错误信息中提到的所有文件,再次运行sudo /usr/sbin/logrotate -f /etc/logrotate.conf ,它就起作用了。

我只是应该在这里分享这个替代解决scheme,因为这是我寻找问题时为我提出的第一个search结果,但是build议的解决scheme对我并不适用。 也许这有助于其他人和我一样。

好的,我有类似的问题。

“日志不被旋转?” 但手动运行logrotate(或运行/etc/cron.daily ,它旋转他们就好了。

所以看来,克朗只是“没有运行”每天。 奇。 所以我查看了cron 输出数据的日志文件,看到“身份validation令牌不再有效;需要一个新的”来解决这个问题,请看这里

随着服务的变化,我经常看到这种情况的发生,并且logrotate中使用的选项已被编辑,导致logrotate每天失败。

为了给你一个想法,最后的修复涉及apache logrotate文件中的notifyempty选项不再有效,反过来导致logrotate一起停止。

虽然这已经涵盖到一点,我想分享我追踪这些问题时经历的过程:

  1. 首先运行#/usr/sbin/logrotate -f /etc/logrotate.conf来查找任何错误(例如postfix:3'missingok')。
    它所指的文件和行号是logrotate.d文件夹中的文件。
  2. 编辑有问题的文件: # vi /etc/logrotate.d/postfix ,并删除导致问题的选项,并保存文件。
  3. 重复第一步,看看是否旋转工作,或者如果有其他问题。

有时候,第一步只是输出任何东西,但是你知道有一个问题。 由于这一切都是因为一个服务的日志文件没有被旋转,所以你可以看到logrotate进程寻找特定的服务,看看是什么阻止它的旋转。 为此,请将verbose标签添加到logrotate命令中,并观察该文件夹中发生的情况(如果有的话)。

我知道我知道。 5岁的线程。

试想一下,如果search结果还是相当高的话,我会为我遇到的问题做出贡献并给予我解决scheme。 我的logrotate作业不是在我的一台服务器上自动处理的。 强制旋转工作正常。 在我手动执行每日轮换命令后,我想出了一个解决scheme:

 ( cd / && run-parts --report /etc/cron.daily ) 

然后,我看到了阻止login作业发生的错误:

 /etc/cron.daily/logrotate: error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log 

是的,就这么简单。 我有两个文件定义相同的日志旋转(iptraf和iptraf-ng)。 只是删除iptraf的一个冲突的logrotate定义了窍门。

 rm /etc/logrotate.d/iptraf 

另一个问题可能是一个拙劣的/ etc / crontab文件。 意思是双重或三重检查该文件的语法,因为如果语法错误,它不会提供任何输出。 语法validation失败后静静地退出。

希望这能节省一些时间。