파일을 추가하기 위해 스크립트를 전달하기 위해 로그 파일 생성을 전달하는 방법

파일을 추가하기 위해 스크립트를 전달하기 위해 로그 파일 생성을 전달하는 방법

데이터베이스를 백업하기 위해 여러 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로그 파일이 올바르게 정렬되도록 사용해야 합니다 . (가장 큰 숫자부터 가장 작은 숫자 이외의 날짜 형식을 사용하는 것은안티패턴)

답변2

리디렉션 및 create-ticket.sh 호출 시 로그 파일 이름 매개변수를 도입할 수 있다고 생각합니다.

0 8 * * * BACKUP=DEV DB=01 LOG=/var/log/backup-db01-$(date "+%m%d%y").log /usr/local/bin/backup.sh > $LOG 2>&1 || /usr/local/bin/create-ticket.sh $LOG

따라서 create-ticked.sh는 해당 매개변수를 예상해야 하며 다음과 같이 내부적으로 사용할 수 있습니다.

 ... --file "$1" ...

이스케이프된 % 기호($(date "+%m%d%y"))를 사용하고 싶지 않을 것입니다. 부분은 021318과 같은 문자열을 한 번 생성하므로 동일한 이름을 고수해야 합니다.

관련 정보