克朗:只有在电子邮件中出错?

我终于通过一个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 

有关http://habilis.net/cronic/的更多信息。

即使/bin/backup.sh (不要把它放在那里)成功,你特别指示cron始终发送电子邮件。 只要省略| mail -s "Backup status" [email protected] | mail -s "Backup status" [email protected]部分和电子邮件只会在有输出时发送。 您可能(取决于您的cron )明确设置邮件地址作为crontab文件中的分配。

有关详情,请参阅

 man 5 crontab 

你应该引导stderr anmd不是stdoutstderr

使用1> /dev/null不是2>&1 ,它应该没问题。 另外,您可能需要在备份脚本中正确报告错误。