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 |
댓글