web-dev-qa-db-fra.com

Comment faire de cron Envoyer un e-mail avec le journal des erreurs lorsque le script jette des erreurs?

J'ai un travail cron qui exécute un script qui écrit des erreurs dans une base de données SQL et écrit les erreurs dans un fichier journal. Le fichier journal est fourni dans la commande pour exécuter le script. Je veux seulement recevoir un email lorsque le script trouve des erreurs et je souhaite que le journal soit inclus dans l'e-mail. Je ne veux pas recevoir d'email si le script ne trouve aucune erreur. Apparemment, le script écrit au journal lorsque le script trouve à la fois ou ne trouve pas d'erreurs (je n'ai pas écrit ce script).

    20 6-10 * * 1-5 ~/job_failure_test.sh -o ~/job_fail.log 2>&1 /dev/null | mail -s "Errors" [email protected] < ~/job_fail.log

Jusqu'à présent, cette ligne m'envoie des courriels lorsqu'il y a des erreurs écrites dans le journal, mais cela ne m'envoie pas le journal mis à jour. Cela me renvoie le journal de l'exécution précédente du travail cron.

4
linuxuser

Juste changer | (a pipe ) à || (A o ) (en supposant que le script utilise correctement les codes de sortie), cependant de modifier le script sur la sortie de l'erreur et de le faire est une meilleure pratique:

[email protected]
[email protected]
20 6-10 * * 1-5 ~/job_failure_test.sh

La nature laide;

20 6-10 * * 1-5 ~/job_failure_test.sh > ~/job_fail.log 2>&1 || mail -s "Errors" [email protected] < ~/job_fail.log
9
user1133275