我终于通过一个shell脚本,在我的数据上设置了一个真实的备份计划,这个脚本是由cron以紧凑的间隔处理的。 不幸的是,每次执行CRON时,我都会收到空的电子邮件,而不仅仅是在出错的时候。
是否有可能只发生CRON发送电子邮件时出现错误,即。 我的TAR
没有按预期执行?
以下是我的crontab是如何设置的;
0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" [email protected]
非常感谢!
理想情况下,如果一切按预期进行,您的备份脚本将不会输出任何内容,而只会在出现问题时产生输出。 然后使用MAILTO环境variables将脚本生成的任何输出发送到您的电子邮件地址。
[email protected] 0 */2 * * * /bin/backup.sh
如果你的脚本通常产生输出,但是你不关心它,只要把它发送到/ dev / null,它只会在写入stderr的时候给你发邮件。
[email protected] 0 */2 * * * /bin/backup.sh > /dev/null
使用cronic包装脚本看起来不错, 使用它你不必改变你的脚本。
代替:
0 1 * * * backup >/dev/null 2>&1
做:
0 1 * * * cronic backup
即使/bin/backup.sh
(不要把它放在那里)成功,你特别指示cron
始终发送电子邮件。 只要省略| mail -s "Backup status" [email protected]
| mail -s "Backup status" [email protected]
部分和电子邮件只会在有输出时发送。 您可能(取决于您的cron
)明确设置邮件地址作为crontab文件中的分配。
有关详情,请参阅
man 5 crontab
你应该引导stderr
anmd不是stdout
和stderr
。
使用1> /dev/null
不是2>&1
,它应该没问题。 另外,您可能需要在备份脚本中正确报告错误。