У меня есть файл конфигурации, который выглядит так:
/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 запускается, когда все файлы журнала повернуты и сжаты. Сценарий запускается успешно, но при запуске программа не находит ни одного из файлов .gz, которые должен был создать logrotate. Через несколько минут я запустил скрипт вручную, все нормально.
Согласно найденным мною документам, postrotate не должен запускаться до завершения сжатия. Разве это не так? Это ошибка в logrotate, поставляемом с Debian Squeeze, или я просто пропустил что-то очень простое?
Если кому-то интересно, сжатие запускается ПОСЛЕ postrotate, несмотря на то, что написано на странице руководства.
Вы пробовали это:
/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