launchd notificación en salida anormal

2

Tengo una lista de tareas launchd que ejecuta un script de shell simple que invoca a rdiff-backup para hacer una copia de seguridad de un directorio remoto a través de SSH en mi computadora. El trabajo se ejecuta cada hora y funciona bien.

Excepto que el otro día hubo un fallo de alimentación * y se interrumpió la tarea de copia de seguridad rdiff. La próxima vez que launchd ejecutó el script, rdiff-backup falló y registró su fallo en la ruta especificada en el plist. launchd, notando el código de salida anormal, dejó de intentar ejecutar el script.

Y no tenía idea durante seis días.

Obviamente, no quiero una notificación del código de salida cada cada vez que finaliza el script. ¿Qué puedo hacer para recibir notificaciones de salidas anormales?

(*) resulta que la batería de mi UPS pasó la autoprueba cuando se invocó, pero en realidad no tenía la capacidad de alimentar incluso una carga mínima durante más de 3 segundos.

    
pregunta samh 10.02.2015 - 20:58

1 respuesta

1

El enfoque tradicional, por ejemplo, con cron jobs, es canalizar el error estándar a un programa como mail que es lo suficientemente inteligente como para no enviarle correo vacío. La diferencia con launchd, como descubrió, es que el mecanismo para redireccionar el error estándar es dar un StandardErrorPath para que se escriba, lo que no es tan conveniente para este propósito como finalizar la entrada de crontab con | mail … .

Mi solución habitual es hacer que un script de envoltura verifique el StandardErrorPath y me notifique si hay algún problema. Esto puede ser parte del mismo trabajo launchd, por lo que la verificación se realiza antes de la próxima ejecución programada, o puede tener un trabajo separado que solo administre los registros de errores (tal vez utilizando una clave QueueDirectories ).

Creo que también podría, por ejemplo, usar una canalización con nombre como StandardErrorPath de su trabajo, pero en realidad nunca lo he intentado.

    
respondido por el LiberalArtist 20.03.2016 - 19:47

Lea otras preguntas en las etiquetas