![파일을 추가하기 위해 스크립트를 전달하기 위해 로그 파일 생성을 전달하는 방법](https://linux55.com/image/138417/%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%A0%84%EB%8B%AC%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20%EB%A1%9C%EA%B7%B8%20%ED%8C%8C%EC%9D%BC%20%EC%83%9D%EC%84%B1%EC%9D%84%20%EC%A0%84%EB%8B%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
데이터베이스를 백업하기 위해 여러 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과 같은 문자열을 한 번 생성하므로 동일한 이름을 고수해야 합니다.