为什么我的一些 cron 作业没有发送电子邮件?

为什么我的一些 cron 作业没有发送电子邮件?

要发送电子邮件,我使用标准配置:

MAILTO="[email protected]"

以下是我的 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

第一项工作进展顺利。完成后,我收到一封电子邮件,主题如下:

“echo “内部备份(mysql)已启动!“&& tar -zvcf /home/backups/sql/01_MondaySQL.tgz /home/mysql/automysqlbackup”

电子邮件中包含了工作期间存档的所有文件的列表。

我希望第二行也完全一样。尽管第二项工作完成得很好(创建了存档 01_MondaySQL.tgz),但我没有收到有关工作的电子邮件。

我在一些 rsync 作业中遇到了同样的问题。例如,这个作业运行良好:

00 16 * * * echo "Mobile Backup has started!" && rsync --delete -aPvz -e "ssh -i /root/.sshkeys/diskstation-rsync-key" /home/backups/mobile/ [email protected]:/volume1/Backups/mobile/

但是这个有同样的问题(没有发送电子邮件):

00 14 * * * echo "Desktop Backup has started!" && rsync --delete -aPvz -e "ssh -i /root/.sshkeys/diskstation-rsync-key" /home/backups/desktop/ [email protected]:/volume1/Backups/desktop/

我检查了日志但没有什么可疑之处。

答案1

您的 stdout 似乎存在问题,因为 cron 决定不向其发送电子邮件。如果没有输出,则 cron 不会发送电子邮件。

我倾向于将所有内容放入如下脚本中:

echo "Mobile Backup has started!"
tar -zvcf /home/backups/sql/01_MondaySQL.tgz /home/mysql/automysqlbackup  > /home/report.txt
mail -s 'backup Report' [email protected] < /home/report.txt

并且您的 cron 只需调用该脚本。

相关内容