Назад | Перейти на главную страницу

Logrotate - слишком раннее срабатывание 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 запускается, когда все файлы журнала повернуты и сжаты. Сценарий запускается успешно, но при запуске программа не находит ни одного из файлов .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