crontab 응용

소개

Crontab을 이용하여 조금 복잡한 스케줄링을 만들어 사용을 해보았습니다. 매월 마지막 금요일에 원하는 job을 돌려보기 위한 설정을 정리해보려 합니다. 해당 방법을 응용하면 다양한 Crontab 설정이 가능하지 않을까 생각합니다.

기본적인 Crontab 사용방법

# 기본 문법
분(0-59) 시(0-23)(1-31)(1-12) 요일(0-7(일요일=0, 월요일=1))  [실행하고자 하는 명령어]

# 예제 - 금요일 11:00 마다 "hello" 출력
0 11 * * 5 echo "hello"

매월 마지막 금요일 원하는 job 실행 설정

# 매월 마지막주 금요일 11시에 echo "hello" 실행
0 11 * * 5 [ $(date +"\%m") -ne $(date -d 7days +"\%m") ] && echo "hello"

기본적인 베이스는 &&(AND) 연산자를 이용하는 것입니다. && 연산자는 앞의 연산이 참일 경우에만 뒤의 연산이 이루어지는 논리 연산자입니다. 

그래서 위의 명령어 부분에서는,

[ $(date +"\%m") -ne $(date -d 7days +"\%m") ]

해당 구문이 참이 되어야 뒤의 echo 문이 실행되게 되는 것입니다.

해당 구문을 또다시 상세 분석해보면,

# 크론탭 돌아가는 해당 날짜의 월과 7일 이후 날짜의 월과 동일하지 않다면 true
[ $(date +"\%m") -ne $(date -d 7days +"\%m") ]

# 세부 구문 분석
$(date +"\%m") : 크론탭 돌아가는 해당 날짜의 월
-ne : not equal 동일하지 않다면 true
$(date -d 7days +"\%m") : 7일 후의 월

명령어가 실행되는 날짜의 월과 7일 후 날짜의 월과 동일하지 않다면(마지막주의 요일이라는 의미) true 를 반환하게 되어 && 뒤의 명령어가 실행되게 됩니다.

결론

&& 논리 연산자를 이용하면 좀더 복잡한 스케줄링과 함께 원하는 명령어를 실행시키도록 설정을 할 수 있을 것같습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Back To Top