cron 표현식은 UNIX 기반 OS에서 Crontab을 사용하거나, Spring Scheduler 등의 스케줄러에서 사용되는 job scheduling 표현식이다.
업무를 진행하면서 크론식 사용은 종종 해보았지만 늘 쓰던대로만 써왔고, 여태 정리를 해본 적은 없는 것 같아 한 번 정리하여 작성해보기로 하였다.
cron 표현식이란
참고: 위키백과
cron 표현식은 스페이스(" ")로 구분되는 7개의 단위로 표현되는 문자열이다.
각 필드는 앞에서부터 초, 분, 시, 일, 월, 요일, 년 으로 구성된다.
| 필드명 | 필수값 여부 | 허용 값 범위 | 허용 특수 문자 | 비고 |
|---|---|---|---|---|
| 초(Seconds) | Y | 0-59 | * , - | 일부 표현식에서 사용되는 필드 crontab에서는 사용되지 않음 |
| 분(Minutes) | Y | 0-59 | * , - | |
| 시(Hours) | Y | 0-23 | * , - | |
| 일(Day of month) | Y | 1-31 | * , - ? L W | ? L W는 일부 표현식에서만 사용 |
| 월(Month) | Y | 1-12 / JAN-DEC | * , - | |
| 요일(Day of week) | Y | 0-6 / SUN-SAT | * , - ? L # | ? L #는 일부 표현식에서만 사용 |
| 년(Year) | N | 1970-2099 | * , - | standard/default 표현식에서는 지원하지 않음 |
,- 목록의 항목을 여러 개 사용할 경우, 항목값을 구분하는 데 사용
- 예) MON,WED,FRI => 월요일, 수요일, 금요일에 실행
-- 범위 지정
- 예) 1970-2099 => 2000년부터 2010년까지 매년
%- 이스케이프 문자(
\)와 함께 사용하지 않는 한 개행 문자로 사용됨 - 첫 번째 % 이후의 입력은 모두 standard input으로 커맨드에 전송된다.
- 이스케이프 문자(
*- 와일드카드로 모든 값을 의미
?- 설정값 없음을 의미
- 몇몇 표현식에서는 와일드카드(
*) 대신 사용하여 월이나 요일 필드를 비워둔다.
/- 시작시간/단위 로 입력하여 단계 값을 지정할 수 있다.
- 예) 0 0/1 * * * ? => 1분마다
#- 요일 필드에서 사용
- 1-5 사이의 숫자가 와야 한다.
- 예) 3#1 => 매월 첫째 주 수요일
L- last를 의미
- 요일 필드에서는 해당 월의 마지막 해당 요일을 표시
- 월 필드에서는 해당 월의 마지막 날을 표시
- 예) 5L => 해당 월 마지막 금요일
W- 가장 가까운 평일(weekday, MON-FRI)을 표시
- 예) 1W => 해당 월 1일과 가장 가까운 평일
cron 표현식의 예
| cron식 | 설명 |
|---|---|
| */1 * * * * ? | 1초마다 |
| 30 0/10 * * * ? | 30초 뒤부터 10분마다 |
| 0 0 10 * * ? | 매일 10시마다 |
| 0 30 10 * * ? | 매일 10시 30분마다 |
| 0 30 10 * * ? 2020 | 2020년에 매일 10시 30분마다 |
| 0 * 10 * * ? | 매일 10:00부터 10:59까지 매분마다 |
| 0 0/1 10 * * ? | 매일 10:00부터 10:59까지 매분마다 |
| 0 0-30 10 * * ? | 매일 10:00부터 10:30까지 매분마다 |
| 0 30 10 L * ? | 매월 마지막날 10시 30분마다 |
| 0 30 10 ? * 5L | 매월 마지막 주 금요일 10시 30분마다 |
'공부 > Computer Science' 카테고리의 다른 글
| OSI 7계층 (0) | 2020.01.06 |
|---|---|
| 스풀링(spooling) (0) | 2018.11.08 |
| 객체지향 설계의 5대 원칙 (SOLID) (0) | 2018.11.05 |
댓글