크론 표현식(Cron Expressions)[오늘도 MadPlay!]
Cron
은 Unix
계열 O/S의 작업 스케줄러 명령 Utility이다.
Unix
기반 Server에서 특정 주기마다 일정 작업(Command, Shell Script)을 실행시킬 때 사용한다.
이 Cron
을 실행시킬 때 Scheduling의 Parameter로 사용되는 표현식을,
Cron Expressions
라고 한다.
오늘은 이 Cron
을 사용할 때의 표현식에 대해서 알아보려한다.
먼저 Cron Expressions
의 구성을 살펴보면 아래와 같다.
// Total Cron Expressions(including Quartz)
# ┌───────────── 초(0 - 59)
# │ ┌───────────── 분(0 - 59)
# │ │ ┌───────────── 시간(0 - 23)
# │ │ │ ┌───────────── 요일(1 - 31)
# │ │ │ │ ┌───────────── 월(1 - 12)
# │ │ │ │ │ ┌───────────── 주(0 - 6)(일요일~토요일,
# │ │ │ │ │ 7은 일부 시스템에서 일요일이기도 함)
# │ │ │ │ │ │ ┌──────────────── 년(생략 or 1970 ~ 2099)
# │ │ │ │ │ │ │
# * * * * * * * <실행 명령>
Cron Expressions
는 7개의 Field가 존재하는데,
Unix O/S
에서는 초, 년을 제외한 5개의 Field를 사용하고,
Quartz
라는 Java Application Scheduler Library에서는 7개의 Field를 모두 사용한다.
// Unix Cron Expressions
# ┌───────────── 분(0 - 59)
# │ ┌───────────── 시간(0 - 23)
# │ │ ┌───────────── 요일(1 - 31)
# │ │ │ ┌───────────── 월(1 - 12)
# │ │ │ │ ┌───────────── 주(0 - 6)(일요일~토요일,
# │ │ │ │ 7은 일부 시스템에서 일요일이기도 함)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <실행 명령>
Cron Expressions
의 Field
에는 값
과 특수문자
의 조합이 올 수 있다.
이제 Cron Expressions
의 각 Field
에 올 수 있는 값을 살펴보면 아래와 같다.
*
,
-
/
*
,
-
/
*
,
-
/
*
,
-
?
L
W
JAN
~ DEC
*
,
-
/
SUN
~ SAT
*
,
-
?
L
#
*
,
-
/
Cron Expressions
에서 사용하는 특수문자는 아래와 같은 상황에서 사용한다.
특수문자 | 용도 |
---|---|
* | 모든 값(매시, 매일, 매주, ...) |
? | 특정 값이 아닌 모든 값, Wild Card |
- | 범위 지정 |
, | 여러 값 지정 |
/ | 증분 값(초기값과 증가치 설정) |
L | 지정 가능 범위 마지막 값 |
W | 가장 가까운 평일(WeekEnd) 설정 시 |
# | N번째 특정 요일 설정 |
위 Cron Expressions
의 구성과 Field를 조합하여 다양한 상황의 기본적인 표현식 예제는 아래와 같다.
// 매 5분마다
// 증분 문자(/) 사용, 년도 Field 생략으로 6개 Field 사용
0 0/5 * * * *
// 매 3시간마다
0 0 0/3 * * *
// 2021년도 매일 07시 05분 마다
// 년도 지정으로 7개 Field 사용
0 5 7 * * * 2021
// 매일 10시 ~ 19시 사이에 10분 마다
// 증분 문자(/), 범위 문자(-) 사용
0 0/10 10-19 * * *
// 매일 10시와 19시에만 10분 마다
// 증분 문자(/), 여러 값 지정(,) 문자 사용
0 0/10 10,19 * * *
// 매달 25일 01시 30분 마다
0 30 1 25 * *
// 매주 월, 금요일 07시와 19시 사이 30분마다
0 30 7-19 ? * MON,FRI
// 매달 마지막날 15시 30분 마다
// 일자 부분에 사용 가능 범위 마지막 값 문자(L) 사용
0 30 15 L * *
CronMaker.com 사이트에서 직접 UI 형태로 표현식과 실제 구동 예제 주기 등도 확인 가능하니,
표현식이 익숙 하지 않을 때 유용하게 사용할 수 있다.
유익한 글 감사합니다 b