データベースをバックアップするために複数のcronジョブを実行しました。
0 8 * * * BACKUP=DEV DB=01 /usr/local/bin/backup.sh > /var/log/backup-db01-`date "+\%m\%d\%y"`.log 2>&1||/usr/local/bin/create-ticket.sh
0 16 * * * BACKUP=DEV DB=02 /usr/local/bin/backup.sh > /var/log/backup-db02-`date "+\%m\%d\%y"`.log 2>&1||/usr/local/bin/create-ticket.sh
スクリプトは失敗時にJIRAチケットを作成し、バックアップログを添付しようとします。
ticket.shの生成スクリプト:
#create Ticket for failed backup#
JIRA=`/opt/atlassian-cli/jira.sh --server https://blahblah --user admin --password blahblah --action createIssue --project "DEV" --type "Incident" --summary "Failed backup on $BACKUP $DB" --components "blah" --priority "Major"| awk '{print $2}'`
###Atttach logs:###
/opt/atlassian-cli/jira.sh --server https://blahblah --user admin --password blahblah --action addAttachment --issue "${JIRA}" --file "?????"
cronが{}セクションで実行されるたびに異なるファイル名を渡す方法を知る必要があります--file "???"
...ファイル名は毎日変更され、各データベースに対して新しく作成されたファイルを選択するには、毎日スクリプトが失敗する必要があります。
ベストアンサー1
crontabをクリーンアップするためのラッパースクリプトを作成します。
0 8 * * * /usr/local/bin/backupOrTicket.sh 01
これを入れてください。
DB=$1
BACKUP=DEV
FILE="/var/log/backup-$DB-$(date +%m%d%y).log"
/usr/local/bin/backup.sh > "$FILE" 2>&1 \
|| /usr/local/bin/create-ticket.sh "$FILE"
--file "$1"
create-ticket.shで使用されます。実際に使用されていない場合は、BACKUP変数を削除する必要があります。また、date --iso-8601=s
ログファイルが正しくソートされるように使用する必要があります。 (最も大きい数字から最も小さい数字以外の日付形式を使用することは、アンチパターン)