본문 바로가기

카테고리 없음

크론 표현식 / Cron Expressio

 

 크론 표현식은 스케줄러를 컨트롤 할때 특정시간대를 지정하기에 유용한 표현식 입니다.

 

크론 표현식은 총 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 표현식의미