要发送电子邮件,我使用标准配置:
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 只需调用该脚本。