web-dev-qa-db-ja.com

他の標準出力ではなく、エラー時にのみcronjob電子メールアラートを取得しますか?

Script.shファイル(DBのバックアップを取る)を実行し、1時間ごとに電子メールを送信するcronジョブがあります。 script.shファイルで、いくつかのデータベース(.sqlファイル)のバックアップを取り、その.Zipを作成しています。私の問題は、何か問題が発生した場合にのみメールを受け取りたいということです。現在、1時間ごとに次のメールが届いています。

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

これを解決する方法はありますか?私はcrontabでこのコードを使用しています:(-Eオプションでheirloommailxの本文が空にならないようにします)

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

私はあなたが2つのステップで行う必要があると思います:

  1. 出力とエラーをログファイルに保存します
  2. スクリプトがゼロ以外で終了した場合は、ログファイルを電子メールで送信します

例えば:

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