logrotate不会自动旋转日志


8

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

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

但这对我来说不好。

设置没有被修改(至少我没有修改它们),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


你有什么错误吗?验证“ include /etc/logrotate.d”没有被注释。
Torian

1
您怎么知道它不会轮换您的日志?错误吗?30天后没有发生?这些箱子一直都在吗?是否在cron中安排了logrotate?
2011年

我可以验证两个系统中都包含“ include /etc/logrotate.d”。除了在syslog中有一些有趣的条目外,没有错误,例如...rsyslogd was HUPed...不确定是否有任何意义。
fabrik

@EightBitTony这些是服务器,因此它们可以正常运行。设置或多或少是默认设置(我没有修改logrotate配置),仅安装了常规设置。logrotate包含在其中,cron.daily但不会发生旋转。
fabrik

@Fabrik,请在问题中添加logrotate -d /etc/logrotate.conf输出
EightBitTony”,2011年

Answers:


8

检查您的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 

这完全像我的配置,除了我的配置不起作用:(
fabrik

运行cron是否检查的输出ps -ef | grep cron| grep -v grep?在/etc/cron.daily/logrotate的开头添加回显,echo "logrotate runing" >>/tmp/logrotate.out并查看是否已创建。
2011年

我的crontab似乎出了点问题。cron已启动并正在运行,但不会运行每日logrotate作业。如果我/etc/cron.daily/logrotate手动运行,它将旋转我的日志,/tmp/logrotate.out也将其写入。
fabrik

别忘了直到明天,日常工作才能再次执行!
2011年

当然,但是昨天我修改了,/etc/cron.daily/logrotate所以我添加了一个-f参数来强制旋转,但是今天早上我的日志没有旋转。
fabrik

10

我有一个类似的问题,但是可以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再次运行即可。

我什至也应该在这里分享这个替代解决方案,因为这是我搜索问题时出现的第一个搜索结果,但是建议的解决方案对我不起作用。也许这对和我一样处境的其他人也有帮助。


谢谢,也有这个问题。删除了所有1.gz文件,它终于恢复了工作。多么可怕的代码。
Florian Heigl

2

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

只是认为,如果搜索量仍然很高,我会做出贡献并针对遇到的问题提供解决方案。我的一台服务器上没有自动处理我的logrotate作业。强制旋转工作正常。手动运行每日轮换命令后,我想出了一个解决方案:

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

然后我看到了导致logrorate作业停止触发的错误:

/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文件。意思是仔细检查该文件的语法,因为它不提供任何我发现语法错误的输出。语法验证失败后,安静地退出。

希望这可以节省一些时间。


1

好吧,我有一个类似的问题。

“日志不是在旋转吗?” 但手动运行logrotate(或运行,/etc/cron.daily然后旋转它们就可以了)。

因此,cron似乎每天都“不在运行”。奇。因此,我查看了cron 输出其数据的日志文件,并看到“身份验证令牌不再有效;需要新的身份验证令牌”以解决该特定问题,请参见此处


1

我已经看到随着服务的变化,这种情况经常发生,并且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进程查找该特定服务,以查看阻止其旋转的原因。为此,将详细标签添加到您的logrotate命令中,并观察该文件夹中发生了什么(如果有的话)。


1

检查冲突的logrotation配置参数!

我在这个问题上苦苦挣扎,最后我非常仔细地阅读了有关logrotate的一些文档,在这里找到了一些有用的文档。

实际上,我既不指定大小参数又不指定旋转间隔参数。我希望我的轮换能够准确地按计划在cron中进行。

  1. Size参数将覆盖任何旋转间隔。因此,我的日志在旋转之前需要超过此参数。(我可以看到,当您最担心磁盘使用情况时,这将很有用。但这不是我想要使用的方式。)
  2. 旋转间隔将检查最后一次旋转的时间,并确保将下一个旋转延迟指定的量。但是,我不清楚您如何控制该时间,它是基于上一次发生轮换的时间。

因此,摆脱“ 旋转间隔大小”参数。这样,每次调用logrotate时都会得到一个轮换,而不必强制执行。

编辑:好的,即使这并不完全有效!如果日志文件低于某个阈值,则日志将不会轮换。因此,当我运行每2分钟旋转一次的cron作业时,它没有旋转日志。

如果运行,则可以看到详细的调试信息logrotate -d。这提供了一些非常有用的调试信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.