본문 바로가기

CS

[batch] cron 표현식

https://ko.wikipedia.org/wiki/Cron

 

cron - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

cron은 유닉스 계열 운영체제의 시간 기반 잡 스케줄러이다. 과거부터 시간 기반 스케줄링을 수행할 때 자주 사용한 유틸리티 프로그램으로, 일정 시간마다 정해진 동작을 수행해야 하는 배치 프로그램을 구현할 때 많이 사용한다.

 이렇다 보니 많은 배치 스케줄러들이 cron을 직접 사용하지는 않더라도 일종의 표준처럼 해당 유틸의 시간 표현 방식을 동일하게 사용하는 경우가 많다. 크론 식은 다음 필드를 포함한다.

필드
0-59, 특문
0-59, 특문
0-59, 특문
일(day of month) 0~31, 특문
월(month) 1~12, JAN-DEC, 특문
요일(day of week) 1-7, SUN-SAT, 특문
연도(year) 연도, 특문
  • 일 · 요일 필드는 특성상 함께 사용될 수 없으므로 둘 중 하나는 최소 ?(사용 안함)가 되는 것이 자연스럽다.
  • 연도 필드의 경우 사용하지 않으면 생략해도 상관 없다.
  • 초 필드는 Quartz 크론식에는 있지만 Linux/Unix 크론식에는 없다.

특정 필드의 위치에 올 수 있는 특수 문자는 다음과 같다.

기호 설명 사용 가능한 필드
*
( wildcard )
모든 숫자 *
? 해당 필드를 사용하지 않음 *
-
( range )
기간을 설정 *
,
( list )
특정 기간을 선택
(ex: 14,18 = 14시,18시)
*
A/B
( interval )
시작/반복 설정
A를 기준으로 B마다 반복
*
L 마지막 기간 일, 요일
W 가장 가까운 평일
A#B B번째 주 A요일 요일

범위를 설정한 경우 마지막 숫자까지 포함된다. 예를 들어 0 0/5 12-17 * * ? 라는 표현식이 있다고 생각해보자. 여기서 12-17은 12~17시를 의미하며, 더 정확히는 [ 12, 13, 14, 15, 16, 17 ] 의 의미를 가지므로 위 표현식은 12:00부터 16:55가 아닌 17:55까지 5분 간격을 의미한다.

표현식 예시는 다음과 같다.

표현식 설명
0 0 12 * * ? 매일 12시 0분에 실행
0 15 10 ? * * 매일 10시 15분에 실행 ( 일 필드 대신 요일 필드를 사용 )
0 15 10 * * ? 매일 10시 15분에 실행 ( 일 필드 사용 )
0 15 10 * * ? 2005 2005년에 매일 10시 15분에 실행
0 * 14 * * ? 매일 14시에 매 분마다 실행 ( 14시 59분까지 )
0 0/5 14 * * ? 매일 14시 0분부터 5분 간격으로 실행( 14시 55분까지 )
0 0/5 14,18 * * ? 매일 14:00 ~ 14:55, 18:00 ~ 18:55 에 5분 간격으로 실행
0 0-5 14 * * ? 매일 14시 0 ~ 5분에 실행
0 10,44 14 ? 3 WED 매년 3월 수요일 14:10, 14:44분에 실행
0 15 10 ? * MON-FRI 매월 월-금요일 10시 15분에 실행
0 15 10 15 * ? 매월 15일 10:15에 실행
0 15 10 L * ? 매월 마지막 날 10:15에 실행
0 15 10 ? * 6L 매월 마지막 주 금요일(일요일 = 1로 시작) 10:15에 실행
0 15 10 ? * 6L 2002-2005 2002년 - 2005년 매월 마지막 주 금요일 10:15에 실행
0 15 10 ? * 6#3 매월 3주차 금요일 10:15에 실행
0 0 12 1/5 * ? 매월 1일부터 5일 간격으로 12:00에 실행
0 11 11 11 11 ? 매년 11월 11일 11:11에 실행
0 0 10 * * ? 매일 10:00에 실행
0 0/15 * * * ? 매 시간 0분 기준으로 15분마다 실행
0 0/10 * ? * MON-FRI 매주 월-금요일에 매 시간 정각 기준 15분마다 실행
0 0/5 8-17 ? * MON-FRI 매주 월-금요일 08-17 시에 매 시간 정각 기준 5분마다 실행
0 0/30 20-2 ? * MON-FRI 매주 월-금요일 20시 ~ 익일 02시에 매 시간 정각 기준 30분마다 실행

표현식 예제 출처

참고한 책: 수제비 정보처리기사 실기

'CS' 카테고리의 다른 글

[CS] DIP / IoC / DI  (0) 2023.10.23
[CS] 객체 지향  (0) 2023.10.18
[네트워크] HOL(Head Of Line) blocking  (0) 2023.08.03
[암호학] 서론  (0) 2022.09.16
[CS] 프로세스(process) 내용 정리  (0) 2021.11.08