Finalmente configuré un programa de copia de seguridad realista de mis datos a través de un script de shell, que maneja cron en intervalos ajustados. Desafortunadamente, sigo recibiendo correos electrónicos vacíos cada vez que se ejecuta el CRON y no solo cuando las cosas salen mal.
¿Es posible hacer que CRON envíe correos electrónicos cuando algo sale mal, es decir? mi TAR
no se ejecuta según lo previsto?
Así es como mi crontab está configurado por el momento;
0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com
¡Muchas gracias!
/bin/backup.sh > log_file || (echo Backup failed with exit status $?; cat log_file)
?Usar una secuencia de comandos de envoltorio crónico parece una buena idea; para usarlo no tienes que cambiar tus scripts.
En lugar de:
hacer:
Simplemente pon; se ejecutará en silencio si todo funciona sin problemas (estado de salida 0), pero informará de forma detallada si no, y dejará que cron maneje los informes de correo.
Más información en https://habilis.net/cronic/ .
fuente
chronic
desde elmoreutils
paquete: joeyh.name/code/moreutilsUsted está indicando específicamente
cron
que siempre envíe un correo electrónico, incluso cuando/bin/backup.sh
(por cierto, debería estarlo/usr/local/bin
) tenga éxito. Simplemente omita la| mail -s "Backup status" [email protected]
parte y el correo electrónico solo se enviará cuando haya salida. Probablemente puede (según sucron
) establecer explícitamente la dirección de correo electrónico para enviar como una asignación en el archivo crontab.Para más detalles, ver
fuente
Debería dirigir el
stderr
anmd no ambosstdout
ystderr
.1> /dev/null
No use2>&1
y debería estar bien. Además, es posible que deba informar el error correctamente en su script de respaldo.fuente
Aquí hay otra variación que he utilizado con éxito durante muchos años: capturar la salida e imprimirla solo por error , activando un correo electrónico. Esto no requiere archivos temporales y conserva toda la salida . La parte importante es la
2>&1
que redirige STDERR a STDOUT.Envíe la salida completa a través de la configuración predeterminada de mailer cron
Lo mismo pero con una dirección y tema específicos:
(la dirección también se puede cambiar configurando MAILTO = xxxx para todo el archivo crontab)
Incluso puede realizar múltiples acciones en caso de error y agregar al correo electrónico:
Esto funcionará para comandos simples. Si se trata de tuberías complejas (
find / -type f | grep -v bla | tar something-or-other
), es mejor que mueva el comando a un script y ejecute el script utilizando el enfoque mencionado anteriormente. La razón es que si alguna parte de la tubería sale a STDERR, aún recibirá correos electrónicos.fuente