Warum senden einige meiner cron-Jobs keine E-Mails?

1857
118218

Zum Versenden von E-Mails verwende ich die Standardkonfiguration mit:

MAILTO="example@gmail.com" 

Hier ist der Inhalt meines Crontab:

00 3 * * 2 echo "Internal Backup (mysql) has started!" && tar -zvcf /home/backups/sql/01_MondaySQL.tgz /home/mysql/automysqlbackup 00 4 * * 2 echo "Internal Backup (www/dev) has started!" && tar -zvcf /home/backups/www/daily/01_Monday_www_dev.tgz /home/www/dev 

Der erste Job funktioniert perfekt. Wenn es fertig ist, erhalte ich eine E-Mail mit diesem Betreff:

"echo" Internes Backup (mysql) wurde gestartet! "&& tar -zvcf /home/backups/sql/01_MondaySQL.tgz / home / mysql / automysqlbackup"

Die E-Mail enthält eine Liste aller Dateien, die während des Jobs archiviert wurden.

Ich möchte genau das gleiche für die zweite Zeile. Obwohl dieser zweite Job gut erledigt ist (Archiv 01_MondaySQL.tgz erstellt), erhalte ich keine E-Mail für den Job.

Ich bin mit einigen Rsync-Jobs vor dem gleichen Problem. Zum Beispiel funktioniert dieser Job perfekt:

00 16 * * * echo "Mobile Backup has started!" && rsync --delete -aPvz -e "ssh -i /root/.sshkeys/diskstation-rsync-key" /home/backups/mobile/ root@www.example.com:/volume1/Backups/mobile/ 

Aber dieser hat dasselbe Problem (keine E-Mails gesendet):

00 14 * * * echo "Desktop Backup has started!" && rsync --delete -aPvz -e "ssh -i /root/.sshkeys/diskstation-rsync-key" /home/backups/desktop/ root@www.example.com:/volume1/Backups/desktop/ 

Ich habe die Protokolle geprüft, aber nichts scheint verdächtig zu sein.

0
Haben Sie die E-Mail-Protokolle zu diesem Zeitpunkt überprüft, um zu sehen, ob die E-Mail gesendet wurde? Ich würde auch versuchen, dies durch das Entfernen der MAILTO-Zeile zu isolieren, damit E-Mails an den Cron-Benutzer gesendet werden. Sie können lokale Mails mit dem Befehl "Mail" überprüfen. Ricardo vor 9 Jahren 0
E-Mails werden nicht gesendet, sie werden nicht im E-Mail-Protokoll angezeigt. Ich versuche ohne MAILTO-Leitung 118218 vor 9 Jahren 0
Ich habe die MAILTO-Leitung entfernt, aber es hat sich nichts geändert. 118218 vor 9 Jahren 0
Sie haben dann ein Problem, dass die Ausgabe in Ihrem Cron-Job nicht von stdout abgeholt wird. Meine Präferenz für diese Art von Job, für die eine E-Mail-Bestätigung erforderlich ist, besteht darin, sie in ein Shell-Skript zu schreiben und am Ende eine E-Mail aus dem Skript heraus zu senden. Siehe ein Beispiel in meiner Antwort. Ricardo vor 9 Jahren 0

1 Antwort auf die Frage

0
Ricardo

Sie scheinen ein Problem mit stdout zu haben, da cron sich dafür entscheidet, E-Mails an nicht zu senden. Wenn keine Ausgabe erfolgt, sendet cron keine E-Mail.

Ich würde es vorziehen, alles in ein Skript wie folgt zu setzen:

echo "Mobile Backup has started!" tar -zvcf /home/backups/sql/01_MondaySQL.tgz /home/mysql/automysqlbackup > /home/report.txt mail -s 'backup Report' example@gmail.com < /home/report.txt 

und Ihr Cron würde dieses Skript einfach nennen.