Estou executando o Ubuntu 14.04 LTS e nginx em um VPS da Digital Ocean e, ocasionalmente, recebo esses e-mails sobre uma falha no trabalho do cron:
Sujeito
Teste Cron -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
O corpo do email é:
/etc/cron.daily/logrotate: erro: erro ao executar o script postrotate compartilhado para as partes de execução '/var/log/nginx/*.log': partes de execução: /etc/cron.daily/logrotate encerradas com o código de retorno 1
Alguma idéia de como posso resolver isso?
Atualizar:
/var/log/nginx/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Atualizar:
$ sudo invoke-rc.d nginx rotate
initctl: invalid command: rotate
Try `initctl --help' for more information.
/etc/logrotate.d/nginix
roteiroinvoke-rc.d nginx rotate
está falhando, tente executar isso como o usuário apropriado e mostre esse script também, cole a saída na sua pergunta original. tks.Respostas:
A ação pós-rotação parece estar incorreta
Experimentar
Se você olhar para o
nginx
comando, verá as ações que ele aceitará. Também a mensagem que você recebe diz chequeinitctl --help
portanto, recarregar deve funcionar e enviar o sinal HUP para o nginx para forçar a reabertura dos arquivos de log.
fonte
Como mencionado em outra resposta, o problema é que
invoke-rc.d nginx rotate
retorna um erro informando que arotate
ação não é suportada. O interessante é queservice nginx rotate
funciona sem problemas.Meu palpite é que o
invoke-rc.d
wrapper não suporta todas as ações que o script init real do nginx suporta.Mudar
invoke-rc.d nginx rotate
paraservice nginx rotate
deve resolver o problema.fonte
Não tenho certeza se porque a
initctl
dose não suporta arotate
opção e quando ela foi removida, mas você não é o único afetado por isso, e há um relatório de erro aberto para isso na barra de ativação.Como mencionado por outras respostas acima e abaixo, você pode editar o arquivo nignx logrotate e substituir a linha problemática
com outras alternativas que funcionam,
Seja qual for o método escolhido, não altere um arquivo gerenciado por um pacote e, após a alteração, ele não será mais atualizado e você terá que resolver manualmente o diff ou substituí-lo por um novo (todos prontos incluem a correção).
fonte
Trabalhou para mim:
Substituído
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
Com
postrotate service nginx rotate >/dev/null 2>&1
fonte
Substituir:
Com:
parece que nas versões mais recentes do Nginx isso funciona. Estou executando a versão 1.9.
fonte