Cron 표현식이란?
Cron 표현식은 유닉스 계열 스케줄러를 사용 할 때 사용되는 정규식입니다.
6자리로 되어 있으며 각 자리의 단위는 아래와 같습니다.
* | * | * | * | * | * |
초 | 분 | 시 | 일 | 월 | 연도 / 주 |
특수문자
- * : 모든 값
- ? : 특정 값이 없음
- - : 범위를 정할 때 사용 ex ) 0-5 , MON-FRI
- , : 복수의 특정 값일 때 사용 ex) 2,4 , MON, FRI
- / : 시작시간 / 단위 ex) 0/5 0초부터 5초 단위
- L : 마지막 일자, 또는 마지막 요일 일 단위에만 사용가능 ( 요일 단위에서 사용시 숫자를 붙이면 마지막 요일을 구할 수 있음
- W : 숫자 + W 를 쓸경우 숫자에 가까운 평일을 선택, ex) 15W 인경우 2022-10-15 일이 토요일이라면 2022-10-14일에 실행
- # : 몇째주의 요일 표현 {요일}#{몇째주} ex) 4#2 → 둘째주 수요일
특수문자 허용 단위
필드명 | 허용 범위 | * | ? | - | , | / | L | W | # |
초 | 0 ~ 59 | ✅ | ✅ | ✅ | ✅ | ||||
분 | 0 ~ 59 | ✅ | ✅ | ✅ | ✅ | ||||
시 | 0 ~23 | ✅ | ✅ | ✅ | ✅ | ||||
일 | 1 ~ 31 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
월 | 1 ~ 12 , JAN ~ DEC | ✅ | ✅ | ✅ | ✅ | ||||
요일 | 0 ~ 6 , SUN ~ SAT | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
연도 | empty , 1970 ~ 2022 | ✅ | ✅ | ✅ | ✅ |
Cron 예시
표현식의 예를 들어보도록 하겠습니다.
Cron | 빈도 |
0 0/5 * * * ? | 5분마다 |
0 0 12 * * ? | 매일 낮 12시에 |
0 15 10 ? * * | 매일 오전 10:15에 |
0 15 10 * * ? | 매일 오전 10:15에 |
0 15 10 * * ? * | 매일 오전 10:15에 |
0 15 10 * * ? 2014 | 2014년 동안 매일 오전 10:15에 |
0 * 14 * * ? | 매일 오후 2:00에 시작해서 매 분마다 실행하고 오후 2:59에 끝남 |
0 0/5 14 * * ? | 매일 오후 2:00에 시작해서 5분마다 실행하고 오후 2:55에 끝남 |
0 0/5 14,18 * * ? | 매일 오후 2시에 시작해서 5분마다 실행되어 오후 2:55에 끝나고, 오후 6시에 시작해서 5분마다 실행되어 오후 6:55에 끝남 |
0 10,44 14 ? 3 WED | 3월 동안 매주 수요일 오후 2:10과 오후 2:44에 |
0 15 10 ? * MON-FRI | 주중 오전 10:15에 |
0 15 10 L * ? | 매월 말일 오전 10:15에 |
0 15 10 ? * 6L | 매월 마지막 금요일 오전 10:15에 |
0 15 10 ? * 6L 2014-2017 | 2014년부터 2017년까지 매월 마지막 금요일 오전 10:15에 |
0 0 0 1W * ? | 매달 1일에 가까운 평일 0시 0분 0초애 |
0 0 0 ? * 7#1 | 매달 첫번째 토요일 0시 0분 0초에 |
0 0 0 ? * 1#2 | 매달 첫번째 일요일 0시 0분 0초에 |
마지막으로 작성한 표현식을 테스트 해볼수 있는 사이트를 소개하고 마칠까 합니다.
표현식을 직접 입력해보고 식이 유효한지를 검증해 볼 수도 있고, 그게 아니고 나는 표현식이 서툰데 직접 옵션을 골라서 표현식을
만들어 보고 싶은 분들도 위에 Generate Cron expression 섹션에서 Cron식을 만들어 볼 수도 있습니다.
Cron 표현식은 개발자라면 한번쯤은 쓸일이 있으니 꼭 숙지해 두시면 좋을 것 같습니다.
그럼 이상으로 Cron 표현식 포스팅을 마치겠습니다.
끝
참고자료
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
'코딩공부 > Server' 카테고리의 다른 글
http 프로토콜의 이해를 위핸 get 방식과 post방식 (0) | 2016.09.20 |
---|