Logrotation - postrotate firing too soon?

6

Eu tenho um arquivo de configuração que se parece com:

/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 }

O synclogs.sh deve ser executado quando todos os arquivos de log forem girados e compactados. O script começa com sucesso, mas quando ele começa a rodar, o programa não encontra nenhum dos arquivos .gz que o logrotate deveria fazer. Eu executei o script manualmente alguns minutos depois, ele começa bem.

De acordo com os documentos que encontrei, o posttrotate não deve começar até que a compressão termine. Não é esse o caso? Isso é um bug no logrotate que vem no Debian Squeeze ou eu simplesmente senti falta de algo muito simples?

    
por Will 28.07.2012 / 13:53

2 respostas

1

Caso alguém esteja se perguntando, comprima os disparos APÓS POSTAR, apesar do que a página do manual diz.

    
por 05.09.2012 / 19:58
1

Você já tentou isso:

/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 }

Dê uma olhada na opção delaycompress, é claro, sem "*" HTH

    
por 28.07.2012 / 16:51