오늘은 Cron 표현식에 대해 정리를 해보고자 합니다.
주로 cron 표현식은 주기적으로 무언가를 실행하고자 할 때 스케줄러를 사용하는데 이 때 언제 실행할 것인가를 표현하는 것이 cron 표현식입니다.
본래 유닉스 계열의 운영체제에서 시간 기반으로 잡 스케줄링을 하는 후면 프로세스의 명칭이 cron이며 이 때 스케줄링 파라미터로 사용한 식을 cron 표현식이라 부릅니다.
이 cron 표현식은 유닉스, 리눅스 뿐만 아니라 Spring 기반의 Quartz에서도 사용되는 표현식이기 때문에 Spring 개발자로서 스케줄링을 할 경우 어느정도 알아야 하는 개념입니다.
cron 표현식은 어떻게 작성하는지, 각 의미는 어떤지 알아보는 시간을 가져보겠습니다.
cron 표현식은 다음과 같습니다.
각 자리는 초,분,시,일,월,"요일",년(선택) 을 의미합니다.
이제 각 자리에 어떤 정보들이 들어갈 수 있는지 알아볼까요?
필드 이름 | 허용값 |
---|---|
초 | 0~59 |
분 | 0~59 |
시 | 0~23 |
날 | 1~31 |
달 | 1~12 or JAN ~ DEC |
요일 | 1~7 or SUN ~ SAT |
년도 | 빈값, 1970 ~ 2099 |
필드 이름 | 설명 | 예시 |
---|---|---|
* | 모든 수를 나타냄 | |
- | 값의 사이를 의미 | 1-10 1~10분 사이에 동작 |
, | 특정값 지칭 | 1,13,15 분에 동작 |
/ | 값의 증가 표현 | 0/5 0분부터 시작해 5분마다 동작 |
? | 특별한 값 없음 | |
L | 마지막 날을 의미 | 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일) |
W | 가장 가까운 평일 | 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음 |
오늘은 cron 표현식을 알아봤습니다. 몇가지 안되는 표현식으로 거의 대부분을 표현할 수 있다보니 해당 표현식을 여러 스케줄러에서 사용하는 것 같습니다.
한 번 공부해보신 뒤 직접 표현식을 구현해보시면 이해가 잘 될 것이라고 생각합니다. 감사합니다.