我有一个如下的配置文件:
/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 之后触发。