仅在发生错误时获取 cronjob 电子邮件警报,而不是其他标准输出?

仅在发生错误时获取 cronjob 电子邮件警报,而不是其他标准输出?

我有一个 cron 作业,它运行一个 script.sh 文件(用于备份数据库),并每小时向我发送一封电子邮件。在 script.sh 文件中,我备份了一些数据库(.sql 文件),然后创建了 .zip 文件。我的问题是,我只想在出现问题时收到电子邮件。目前我每小时都会收到以下电子邮件。

adding: db2017_173601.sql (deflated 89%)
adding: bvDatabase_173601.sql (deflated 94%)
adding: cmc_173601.sql (deflated 60%)

知道如何解决这个问题吗?我在 crontab 中使用此代码:(-E 选项可防止 heirloom mailx 中出现空文本)

/60 * * * *  /usr/local/sbin/mysqldata.sh 2>&1 | mail -s "Backup Failed" -E [email protected]

答案1

我认为你需要分两步进行:

  1. 将输出和错误保存到日志文件
  2. 如果脚本以非零值退出,则通过电子邮件发送日志文件

例如:

/60 * * * *  /usr/local/sbin/mysqldata.sh >/path/to/log 2>&1; [ $? != 0 ] && mail -s "Backup Failed" -E [email protected] < /path/to/log

相关内容