Cron
cron은 UNIX에서 오랫동안 사용된 잡 스케줄러다. 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 기능을 제공한다.
Format
cron 표현식은 공백(띄어쓰기)으로 구분 된 6개 또는 7개의 필드로 구성된 문자열이다.
| 필드 구분 | 필수 | 허용 값 | 허용 특수문자 |
|---|---|---|---|
| 초 | o | 0-59 | , - * / |
| 분 | o | 0-59 | , - * / |
| 시 | o | 0-23 | , - * / |
| 일 | o | 1-31 | , - * ? / L W |
| 월 | o | 1-12 또는 JAN-DEC | , - * / |
| 요일 | o | 1-7 또는 SUN-SAT | , - * ? / L # |
| 년도 | x | empty, 1970-2099 | , - * / |
-
*- 필드 내의 모든 값을 선택하는 데 사용된다. 예를 들어,분필드의*는매분을 의미한다. -
?-일, 요일두 필드에서만 사용되는데 특정 값이 없을 때 (어떤 값이든 상관 없을 때) 사용한다. 예를 들어, 특정 날짜 (예:10일)에 실행하고 싶지만 그 요일이 무슨 요일인지는 신경 쓰지 않으려면일필드에10을 넣고,요일필드에?를 넣는다. -
--범위를 지정하는 데 사용된다. 예를 들어,시간필드의1-3은1시, 2시, 3시를 의미한다. -
,-추가 값을 지정하는 데 사용된다. 예를 들어,요일필드의MON, WED, FRI는월요일, 수요일, 금요일을 의미한다. -
/-시작 값과증가 값을 지정하는 데 사용된다. 예를 들어초필드의0/20는0초, 20초, 40초를 의미한다. 그리고초필드의5/20은5초, 25초, 45초를 의미한다. -
L-일, 요일두 필드에서만 사용되는데 지정할 수 있는 범위의마지막 값을 설정할 때 사용한다. 예를 들어,일필드에서L은월의마지막 날을 의미한다. 예를 들어, 1월의 경우는 31일, 2월의 경우는 28일이다.요일필드에L만 사용되는 경우는7(SAT)을 의미한다. 그리고6L은매월 마지막 금요일을 의미한다.L-3과 같이 해당 월의 마지막 날부터 오프셋을 지정할 수도 있다. 하지만L-3처럼 사용하면 혼동을 주고 예기치 않은 결과를 얻을 수 있으므로L을 사용할 때 목록이나 범위를 지정하지 않는 것이 좋다. -
W-일필드에만 쓰이고, 주어진 요일에 가장 가까운 평일(월요일-금요일)을 지정하는 데 사용된다. 예를 들어,일필드에15W를 넣으면매월 15일에서 가장 가까운 평일에 실행한다. 따라서 15일이 토요일이면 14일 금요일에 실행된다. 15일이 일요일이면 16일 월요일에 실행된다. 15일이 월요일이면 15일 월요일에 실행된다. 그런데일필드에1W를 넣었을 때, 1일이 토요일이면 월의 경계를 넘지 않으므로 3일 월요일에 실행된다.W는 하루인 경우에만 지정할 수 있고 목록이나 범위에 사용할 수 없다.L및W는LW처럼일필드에서 합쳐 쓸 수 있고,마지막 평일을 뜻한다. -
#-요일필드에만 쓰이고, 해당 월의n번째 00일을 지정하는 데 사용된다. 예를 들어,요일필드의6#3은매월 세 번째 금요일을 의미한다. (6=금요일, #3 = 해당 월의 세 번째 요일). 또한2#1는매월 첫 번째 월요일를 의미한다. 그리고7#5처럼매월 다섯 번째 토요일인데,#5를 지정하고 해당 월에 다섯 번째 토요일이 없으면 해당 월에는 실행하지 않는다.허용되는 문자와월및요일값은 대소문자를 구분하지 않는다.MON은mon과 동일하다 .
참고
http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html
