J'utilise Ubuntu 14.04 LTS et nginx sur un VPS Digital Ocean et reçois occasionnellement ces e-mails concernant un échec de cron:
Matière
Test Cron -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
Le corps de l'e-mail est:
/etc/cron.daily/logrotate: erreur: erreur lors de l'exécution du script postrotate partagé pour les parties d'exécution '/var/log/nginx/*.log': /etc/cron.daily/logrotate est sorti avec le code retour 1
Avez-vous des idées sur la façon de résoudre ce problème?
Mettre à jour:
/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
}
Mettre à jour:
$ sudo invoke-rc.d nginx rotate
initctl: invalid command: rotate
Try `initctl --help' for more information.
/etc/logrotate.d/nginix
scriptinvoke-rc.d nginx rotate
échoue, essayez de l'exécuter en tant qu'utilisateur approprié, et montrez-nous également ce script, collez la sortie dans votre question d'origine. tks.Réponses:
L'action de post-rotation semble incorrecte
Essayer
Si vous regardez la
nginx
commande, vous verrez les actions qu'elle acceptera. Le message que vous avez reçu dit aussi de vérifierinitctl --help
donc le rechargement devrait fonctionner et envoyer un signal HUP à nginx pour forcer la réouverture des fichiers journaux.
la source
Comme mentionné dans une autre réponse, le problème est que
invoke-rc.d nginx rotate
renvoie une erreur indiquant que l'rotate
action n'est pas prise en charge. La chose intéressante est que celaservice nginx rotate
fonctionne sans problèmes.Je suppose que le
invoke-rc.d
wrapper ne prend pas en charge toutes les actions prises en charge par le script d'initialisation nginx réel.Changer
invoke-rc.d nginx rotate
pourservice nginx rotate
devrait résoudre le problème.la source
Je ne sais pas si c'est parce que la
initctl
dose ne prend pas en charge l'rotate
option, et quand elle a été supprimée, mais vous n'êtes pas le seul affecté par cela, et il existe un rapport de bogue ouvert pour cela sur le tableau de bord.Comme mentionné par les autres réponses ci-dessus et ci-dessous, vous pouvez modifier le fichier nignx logrotate et remplacer la ligne problématique
avec d'autres alternatives qui fonctionnent,
Quelle que soit la méthode que vous avez choisie, veuillez ne pas modifier un fichier géré par un package, et après l'avoir modifié, il ne sera plus mis à jour et vous devrez résoudre manuellement le diff ou l'écraser avec un nouveau (qui tous prêts incluent le correctif).
la source
A travaillé pour moi:
remplacé
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
par
postrotate service nginx rotate >/dev/null 2>&1
la source
Remplacer:
Avec:
semble sur les nouvelles versions de Nginx cela fonctionne. J'utilise des versions 1.9.
la source