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
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"
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)
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address
Incluso puede realizar múltiples acciones en caso de error y agregar al correo electrónico:
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || {echo "$OUTPUT" ; ls -ltr /backup/dir ; }
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.