이슈 상황
DB의 특정 테이블을 백업하는 스크립트를 cron을 통해 수행하는데 종종 백업파일이 생성되지 않는 이슈가 발생
원인
원인은 모르지만 우선 백업을 받아야 하기때문에 유사한 재현 스크립트를 통해 테스트 후 해결책을 적용
스크립트 내용
[root@pyhost ~]# cat ctest.sh
#/bin/bash DATE=$(sudo date -d 'yesterday' +%Y-%m-%d"_"%T) TARGETFILE="/root/test_516_$DATE.csv" echo -e "Files to create: $TARGETFILE\n" filecreate () { RNUM=$(shuf -i 1-10 -n 1); if [ $RNUM == 1 ]; then touch $TARGETFILE echo a >> $TARGETFILE else touch $TARGETFILE fi } filecreate; if [ ! -s $TARGETFILE ]; then NUM=0 while [ $NUM -lt 10 ]; do filecreate; if [ ! -s $TARGETFILE ]; then sleep 2 else echo -e "$TARGETFILE file was \033[1;32msuccessfully\e[21\033[0m created in $NUM times by retrial." exit 0 fi NUM=$((NUM+1)); echo -e "\e[34m\e[1m$NUM times tried...\e[21\033[0m" done echo -e "\033[1;31m\e[5mFailed to create file greater than size 0.\e[21\033[0m" fi exit 0
실행 방법 : /root 디렉토리에 ctest.sh 를 위치한 후 실행 시키면 됨.
스크립트 설명
1) 1 ~ 10 사이의 랜덤 수를 발생
2) 랜덤 수 중 1일 때만 파일사이즈가 0 이상의 파일을 생성
3) 생성된 파일 사이즈가 0이 아닐때까지 2초 간격으로 10회 동안 반복해서 실행
script for file create