Logrotation - postrotate 触发得太早了吗?

Logrotation - postrotate 触发得太早了吗?

我有一个如下的配置文件:

/var/log/nginx/*.log {
        daily
        missingok
        rotate 90
        dateext
        compress
        notifempty
        create 644 root adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
                /usr/local/bin/synclogs.sh
        endscript }

synclogs.sh 应该在所有日志文件都已轮换和压缩后运行。该脚本确实成功启动,但当它开始运行时,程序找不到 logrotate 应该制作的任何 .gz 文件。几分钟后我手动运行了该脚本,它启动正常。

根据我找到的文档,postrotate 应该在压缩完成之前启动。难道不是这样吗?这是 Debian Squeeze 中附带的 logrotate 的一个错误,还是我只是错过了一些非常简单的东西?

答案1

您是否尝试过这个:

/var/log/nginx/*.log {
        daily
        missingok
        rotate 90
        dateext
        compress
        **delaycompress**
        notifempty
        create 644 root adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
                /usr/local/bin/synclogs.sh
        endscript }

看一下delaycompress选项,当然没有“*”HTH

答案2

以防有人感到疑惑,无论手册页上怎么说,压缩都会在 postrotate 之后触发。

相关内容