Estoy ejecutando Ubuntu 14.04 LTS y nginx en un Digital Ocean VPS y ocasionalmente recibo estos correos electrónicos sobre un trabajo cron fallido:
Tema
Prueba de Cron -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
El cuerpo del correo electrónico es:
/etc/cron.daily/logrotate: error: error al ejecutar el script postrotate compartido para '/var/log/nginx/*.log' run-parts: /etc/cron.daily/logrotate salió con el código de retorno 1
¿Alguna idea sobre cómo puedo resolver esto?
Actualizar:
/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
}
Actualizar:
$ 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
está fallando, intente ejecutarlo como el usuario apropiado y muéstrenos ese script también, pegue el resultado en su pregunta original. tks.Respuestas:
La acción de rotación posterior parece ser incorrecta
Tratar
Si observa el
nginx
comando, verá las acciones que aceptará. También el mensaje que recibió dice chequeinitctl --help
entonces la recarga debería funcionar y enviar la señal HUP a nginx para forzar la reapertura de los archivos de registro.
fuente
Como se mencionó en otra respuesta, el problema es que
invoke-rc.d nginx rotate
devuelve un error que indica que larotate
acción no es compatible. Lo interesante es queservice nginx rotate
funciona sin problemas.Supongo que el
invoke-rc.d
contenedor no admite todas las acciones que admite el script de inicio nginx real.Cambiar
invoke-rc.d nginx rotate
aservice nginx rotate
debería resolver el problema.fuente
No estoy seguro de si es porque la
initctl
dosis no es compatible con larotate
opción, y cuándo se eliminó, pero usted no es el único afectado por esto, y hay un informe de error abierto para esto en la plataforma de lanzamiento.Como mencionan otras respuestas arriba y abajo, puede editar el archivo logrotate de nignx y reemplazar la línea problmatic
con otras alternativas que funcionan,
Independientemente del método que elija, no cambie un archivo administrado por un paquete y, después de cambiarlo, ya no se actualizará y tendrá que resolver manualmente el diff o sobrescribirlo con un uno nuevo (que todo listo incluye la solución).
fuente
Trabajado para mí:
Sustituido
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
Con
postrotate service nginx rotate >/dev/null 2>&1
fuente
Reemplazar:
Con:
Parece que en las versiones más nuevas de Nginx esto funciona. Estoy ejecutando versiones 1.9.
fuente