erreur nginx logrotate sur le travail cron

Je cours Ubuntu 14.04 LTS et nginx sur un Digital Ocean VPS et de time en time recevoir ces e-mails à propos d'un travail cron échoué:

Assujettir

Test Cron -x / usr / sbin / anacron || (cd / && run-parts –report /etc/cron.daily)

Le corps de l'email est:

/etc/cron.daily/logrotate: error: erreur lors de l'exécution du script postrotate partagé pour '/var/log/nginx/*.log' run-parts: /etc/cron.daily/logrotate sorti avec le code return 1

Avez-vous des idées pour 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. 

L'action post-rotation semble incorrecte

essayer

 invoke-rc.d nginx reload >/dev/null 2>&1 

Si vous regardez la command nginx vous verrez les actions qu'elle acceptera. Aussi le message que vous avez dit cocher initctl --help

 xtian@fujiu1404:~/tmp$ initctl help Job commands: start Start job. stop Stop job. restart Restart job. reload Send HUP signal to job. status Query status of job. list List known jobs. 

donc recharger devrait fonctionner et envoyer le signal HUP à nginx pour forcer la réouverture des files journaux.

Comme mentionné dans une autre réponse, le problème est que invoke-rc.d nginx rotate renvoie une erreur indiquant que l'action de rotate n'est pas prise en charge. La chose intéressante est que le service nginx rotate fonctionne sans problème.

Je suppose que l'encapsuleur invoke-rc.d ne prend pas en charge toutes les actions sockets en charge par le script d'initialisation nginx.

La modification de la invoke-rc.d nginx rotate vers le service nginx rotate devrait résoudre le problème.

Je ne sais pas si c'est parce que initctl dose ne supporte pas l'option de rotate , et quand il a été enlevé, mais vous n'êtes pas le seul affecté par cela, et il y a un rapport de bug ouvert sur ce tremplin.

  • Le bogue n ° 1450770 "action logrotate" tourne "a échoué"
  • Bug # 1476296 "Les commands de service Nginx 1.8 (PPA stable) ne fonctionnent pas …"

Comme mentionné par d'autres réponses ci-dessus et ci-dessous, vous pouvez éditer le file logrotate de nignx et replace la ligne problématique

 invoke-rc.d nginx reload >/dev/null 2>&1 

avec d'autres alternatives qui fonctionne,

 start-stop-daemon --stop --signal USR1 --quiet --pidfile /run/nginx.pid --name nginx # or service nginx rotate >/dev/null 2>&1 # or [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` 

Quelle que soit la méthode que vous avez choisie, ne changez pas un file qui est 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 sont tous prêts à inclure le correctif).

A travaillé pour moi:
Remplacé
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
Avec
postrotate service nginx rotate >/dev/null 2>&1
J'espère que cela aide quelqu'un quelque part ….

Remplacer:

 invoke-rc.d nginx reload >/dev/null 2>&1 

Avec:

 [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` 

semble sur les nouvelles versions de Nginx cela fonctionne. Je cours des versions 1.9.