개발을 하다 보면 사용 할 때만 잠깐 찾아서 사용하고 금방 잊어서 다음에 쓸 때 다시 찾아보게 하는 몇 가지가 있습니다. 제 경우엔 정규 표현식(Regular Expression)과 크론 표현식(Cron Expression)이 바로 그것 입니다. 최근에 필요에 의해서 다시 여기저기 찾아보는 일이 있었는데요. 이 참에 블로그에 쭉 정리 해 두려 합니다.
목차
크론 표현식(Cron Expression) 이란?
크론 표현식은 리눅스나 유닉스 기반 운영체제에서 반복 작업의 일정을 지정하는 데 사용됩니다. 그리고 스프링 배치 등의 스케쥴링을 위해 사용 됩니다.
크론 표현식의 7 자리의 문자가 어떤 것을 표현하는 것인지 간략하게 정리해 그려 보았습니다.
유닉스/리눅스의 Crontab에 사용되는 표현식은 붉은 점선으로 표시된 초, 년에 제외 된 5자리의 크론 표현식이 사용되고 자바의 스프링 배치 등에서는 7 자리 쿼츠 크론 표현식이 사용됩니다. 그리고 ‘년’ 에 해당하는 문자는 생략 가능합니다.
정리하면 Crontab의 크론 표현식은 ‘초(Seconds)’, ‘년(Year)’이 없는 5자리. 그리고 스프링 배치는 7자리 또는 ‘년(Year)’을 생략한 6자리로 표현됩니다.
크론 표현식에서 사용되는 문자
* | 모든 값. (매 분, 매 시, 매 일 등에 사용) |
– | 특정 범위. (예 : 5-10) |
, | 여러 개의 지정 시 사용. (예 : 5,7,10) |
/ | 초기 값과 증가 값. (예 */5) |
? | 특정 값이 없음. 날짜와 요일에만 사용 |
# | n번째 특정 요일 지정 |
W | 가장 가까운 평일 |
L | 지정할 수 있는 범위의 마지막 값, 날짜와 요일에만 사용 |
각 자리마다 숫자, 특수문자 또는 숫자와 특수문자 조합으로 작성됩니다. 사용할 수 있는 특수 문자는 위의 표와 같습니다.
1월 | 2월 | 3월 | 4월 | 5월 | 6월 | 7월 | 8월 | 9월 | 10월 | 11월 | 12월 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
JAN | FEB | MAR | APR | MAY | JUN | JUL | AUG | SEP | OCT | NOV | DEC |
일 | 월 | 화 | 수 | 목 | 금 | 토 | |
크론 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
쿼츠 크론 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
SUN | MON | TUE | WED | THU | FRI | SAT |
월(Month)과 요일은 숫자 또는 문자로 표현할 수 있습니다. 요일은 특이하게 리눅스에 사용되는 크론과 자바 스프링에서 사용하는 쿼츠크론의 숫자 표현이 다릅니다. 주의해야 할 부분입니다.
크론 표현 사용 예시
위의 두 글을 통해서 사용 예시를 참고하시면 됩니다.
참고자료
Cron Trigger Tutorial (quartz-scheduler.org)
cron – 위키백과, 우리 모두의 백과사전 (wikipedia.org)