![Logrotation - postrotate 触发得太早了吗?](https://linux22.com/image/591316/Logrotation%20-%20postrotate%20%E8%A7%A6%E5%8F%91%E5%BE%97%E5%A4%AA%E6%97%A9%E4%BA%86%E5%90%97%EF%BC%9F.png)
我有一个如下的配置文件:
/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 之后触发。