4

У меня есть задание 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, чтобы предотвратить пустое тело в семейной реликвии mailx)

/60 * * * *  /usr/local/sbin/mysqldata.sh 2>&1 | mail -s "Backup Failed" -E email@example.com

1 ответ1

2

Я думаю, что вам нужно сделать в два этапа:

  1. Сохраните вывод и ошибки в лог-файл
  2. Если сценарий завершился с ненулевым значением, отправьте файл журнала по электронной почте.

Например:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .