Logrotate 未运行

Logrotate 未运行

我用Ubuntu 14.04 我尝试每次运行 logrotate10分钟并删除所有大于的日志文件2MB我尝试了很多解决方案,但都不起作用,我的 logrotate 每天只运行 1 次,我尝试将 logrotate 从 cron.daily 移到 cron.hourly 但没有起作用,我尝试其他解决方案并执行以下操作:

创建文件logrotate:

*/10  *  *  *  *   root /usr/sbin/logrotate /etc/logrotate.conf

并添加:

/etc/cron.d

这是我的/etc/logrotate.d/apache2:

/var/log/apache2/*.log /var/log/apache2/domains/*log {
    weekly
    missingok
    rotate 10
    maxsize 2M
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null || true
            [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
    prerotate
            if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                    run-parts /etc/logrotate.d/httpd-prerotate; \
            fi; \
    endscript
}

答案1

如果大小是轮换日志文件的唯一标准,则您应该weekly从配置中删除关键字。

man 8 logrotate

weekly
如果当前工作日早于上次轮换的工作日或距离上次轮换已超过一周,则将轮换日志文件。这通常与在每周第一天轮换日志相同,但如果 logrotate 不是每晚运行,效果会更好。

但是,为了避免你的 Apache Web 服务器每 10 分钟重启一次,可以考虑使用rotatelogs可以将其配置为仅保留少量有限大小的日志:

CustomLog "|bin/rotatelogs -n 10 /var/log/access_log 2M" common

答案2

Logrotate 应该每天运行一次。这就是它位于 /etc/cron.daily/logrotate 的原因。
如果您想要更频繁地运行 logrotate,则需要删除 /etc/cron.daily/logrotate 并在 crontab 中手动添加 logrotate 记录。

相关内容