크론 표현식은 스케줄러를 컨트롤 할때 특정시간대를 지정하기에 유용한 표현식 입니다.
크론 표현식은 총 7개의 필드로 구성되어 있으며 공백으로 구분 됩니다.
Cron 표현식 필드
[초] [분] [시간] [일] [월] [요일] [년]
필드 | 허용되는 값 | 허용되는 특수문자 |
초 | 0-59 | , - * / R |
분 | 0-59 | , - * / R |
시간 | 0-23 | , - * / R |
일 | 1-31 | , - * / ? L W |
월 | 1-12 또는 JAN-DEC | , - */ |
요일 | 0-6 또는 SUN-SAT | , - / ? L # |
년 | 1970-2099 | , - * / |
특수문자
쉼표 (,)
쉼표는 목록 항목을 구분합니다.
ex) "MON,WED,FRI" 월요일, 수요일, 금요일을 뜻함
하이픈 (-)
범위를 정의합니다.
ex) 2013-2023 2013년도 ~ 2023년도사이
와일드카드 (*)
필드 내의 모든 가능한 값을 선택합니다.
예를 들어, 분 필드에 *을(를) 입력하면 0분 ~ 59분 을 의미합니다.
와일드카드는 요일 필드에는 사용할 수 없습니다.
물음표 (?)
특정 일을 선택할 때는 날짜나 요일 중에서 하나를 선택할 수 있습니다.
두 개 모두 지정할 수는 없습니다. 날짜를 지정하면 요일에 ?을(를) 사용해야 합니다.
요일에 상관없이 10일에 실행시키고 싶다면 날짜 필드에 10 요일 필드에 ? 를 입력해서 사용하시면됩니다.
해시 (#)
"몇 번째" 날인지 지정하는 데 사용됩니다.
ex) 2#3 ==> 요일필드에 사용시 2는 화요일 이며 3은 세번째를 뜻하므로 그 달의 세번째 화요일 이라는 뜻입니다.
만약 5#5 를 지정하여 5번째 금요일을 지정하였는데 해당 날짜가 존재하지 않으면 실행되지 않습니다.
슬래시 (/)
범위 증가 단위를 나타냅니다.
ex) 3-59/15 [분] 필드에서 사용시 3번째 분과 그 이후의 매 15분을 의미합니다.
마지막(L)
요일 필드에 사용하면 해당 월의 마지막 화요일(2L)과 같이 구조를 지정할 수 있습니다.
날짜 필드에서는 그 달의 마지막 날을 지정합니다. ex) 1월 31일
주일 (W)
W 문자는 날짜 필드에 사용합니다.
특정 날짜에서 가장 가까운 요일(월~금)을 지정합니다.
ex) 15W [날짜] 팔드에 입력시 15일에 가장 가까운 주일을 의미합니다.
15일이 토요일이라면 14일 금요일에 실행됩니다.
예외로 1W 값을 입력하였고 1일이 토요일이라면 전달로 넘어가지 않고, 3일 월요일에 실행됩니다.
예시
0 0 12 * * ? *
맨 왼쪽 부터 순서대로 초, 분, 시간, 일, 월, 요일, 년 입니다.
* 는 모든 을 뜻하며, ? 는 일에 * 사용하였기 때문에 사용한 문자입니다.
단순하게 풀자면 0초 | 0분 | 12시 | 모든 일 | 모든 월 | ?요일 | 모든 년도
따라서 매일 오후 12시(정오) 에 실행되는 크론표현식입니다.
Cron 표현식 응용
CON 표현식의미
0 0 12 * * ? * | 매일 오후 12시(정오)에 실행됩니다. |
R 0 0 * * ? * | 매일 00:00시에 실행되지만 초는 무작위입니다(0-59). |
R R R 15W * ? * | 매월 15일에 무작위 시간에 실행됩니다(초, 분, 시간). 15일이 토요일이라면 14일 금요일에 트리거됩니다. 15일이 일요일이라면 16일 월요일에 트리거됩니다. |
0 15 10 * * ? 2016 | 2016년 동안 매일 오전 10:15에 실행됩니다. |
0 * 14 * * ? * | 매일 오후 2~2:59 사이에 1분마다 실행됩니다. |
0 0/5 14 * * ? * | 매일 오후 2~2:55 사이에 5분마다 실행됩니다. |
0 0/5 14,18 * * ? * | 매일 오후 2~2:55 사이에 5분마다 실행되고 오후 6~6:55 사이에 5분마다 실행됩니다. |
0 0-5 14 * * ? * | 매일 오후 2~2:59 사이에 1분마다 실행됩니다. |
0 10,44 14 ? 3 WED * | 3월에 매주 수요일마다 오후 2:10~2:44에 실행됩니다. |
0 15 10 ? * MON-FRI * | 매주 월요일, 화요일, 수요일, 목요일, 금요일 오전 10:15에 실행됩니다. |
0 15 10 15 * ? * | 매월 15일 오전 10:15에 실행됩니다. |
0 15 10 ? * 5L * | 매월 마지막 금요일 오전 10:15에 실행됩니다. |
0 15 10 ? * 5L 2016-2020 | 2016~ 2020년 동안 매월 마지막 금요일 오전 10:15에 실행됩니다. |
0 15 10 ? * 5#3 * | 매월 셋째 주 금요일 오전 10:15에 실행됩니다. |
0 0 * * * ? * | 매일 1시간마다 실행됩니다. |
CON 표현식의미