glorypang 2025. 10. 17. 20:42
728x90
반응형
SMALL

Cron 표현식 개요

정의

  • 목적: 작업 스케줄링을 위한 시간 표현 방식
  • 용도: 주기적·반복적 작업 자동 실행 (배치, 백업, 알림 등)
  • 사용처: Linux/Unix cron, Spring Scheduler, Quartz, Jenkins 등

Cron 표현식 구조

기본 형식 (Unix/Linux Cron - 5필드)

* * * * *
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 요일 (0-7, 0과 7=일요일)
│ │ │ └─── 월 (1-12)
│ │ └───── 일 (1-31)
│ └─────── 시 (0-23)
└───────── 분 (0-59)

확장 형식 (Spring/Quartz - 6~7필드)

초 분 시 일 월 요일 (연도)

필드별 상세

필드 값  범위  특수 문자 설명
0-59 * , - / 분 (Minute)
0-23 * , - / 시간 (Hour, 24시간 형식)
1-31 * , - / ? L W 날짜 (Day of Month)
1-12 또는 JAN-DEC * , - / 월 (Month)
요일 0-7 또는 SUN-SAT * , - / ? L # 요일 (0=일, 1=월, ..., 7=일)
0-59 * , - / 초 (Second, 확장 시)
연도 1970-2099 * , - / 연도 (Year, 선택 사항)

특수 문자 의미

문자 의미  예시  설명
* 모든 값 * * * * * 매분마다
, 여러 값 나열 0,15,30,45 * * * * 0분, 15분, 30분, 45분
- 범위 지정 0 9-17 * * * 9시~17시 매시 정각
/ 증가값 (간격) */10 * * * * 10분마다
? 특정 값 없음 0 0 15 * ? 매월 15일 (요일 무관)
L 마지막 0 0 L * * 매월 마지막 날
W 가장 가까운 평일 0 0 15W * * 15일과 가장 가까운 평일
# N번째 요일 0 0 ? * 2#3 매월 3번째 월요일

자주 사용하는 Cron 표현식 예제

기본 예제

Cron 표현식 설명
* * * * * 매분마다 실행
0 * * * * 매시 정각 (0분)에 실행
0 0 * * * 매일 자정 (0시 0분)에 실행
0 0 1 * * 매월 1일 자정에 실행
0 0 * * 0 매주 일요일 자정에 실행

시간 간격

Cron 표현식 설명
*/5 * * * * 5분마다 실행 (0, 5, 10, ..., 55분)
*/10 * * * * 10분마다 실행
*/15 * * * * 15분마다 실행
0 */2 * * * 2시간마다 실행 (0시, 2시, 4시, ...)
0 */6 * * * 6시간마다 실행

특정 시간

Cron 표현식 설명
0 9 * * * 매일 오전 9시에 실행
30 15 * * * 매일 오후 3시 30분에 실행
0 9-17 * * * 9시~17시 매시 정각 (근무 시간)
0 9,12,18 * * * 매일 9시, 12시, 18시에 실행
0 0 9-18/2 * * * 9시부터 18시까지 2시간마다 (9, 11, 13, 15, 17시)

요일 지정

Cron 표현식 설명
0 9 * * 1-5 평일(월~금) 오전 9시
0 0 * * 6,0 주말(토, 일) 자정
0 18 * * 5 매주 금요일 오후 6시
0 0 ? * MON 매주 월요일 자정

특정 날짜

Cron 표현식 설명
0 0 1,15 * * 매월 1일, 15일 자정
0 0 L * * 매월 마지막 날 자정
0 0 15W * * 매월 15일과 가장 가까운 평일
0 0 1 1 * 매년 1월 1일 자정 (신년)
0 0 1 */3 * 분기별 1일 자정 (1, 4, 7, 10월)

복합 조건

Cron 표현식 설명
0 0,12 * * * 매일 자정과 정오
0 */4 * * * 4시간마다 (0시, 4시, 8시, 12시, ...)
0 9-17 * * 1-5 평일 근무 시간 매시 정각
0 0 ? * 2#3 매월 3번째 월요일 자정
0 30 6 * * MON-FRI 평일 오전 6시 30분 (초 포함, 6필드)

특수 문자 상세 설명

1. ? (물음표) - 특정 값 없음

  • 사용 위치: 일(Day) 또는 요일(Day of Week) 필드
  • 의미: "상관없음" 또는 "지정하지 않음"
  • 사용 이유: 일과 요일 중 하나만 지정할 때 나머지에 사용
0 0 15 * ?     (O) 매월 15일 자정 (요일 무관)
0 0 ? * MON    (O) 매주 월요일 자정 (날짜 무관)
0 0 15 * MON   (X) 일과 요일 동시 지정 불가

2. L (Last) - 마지막

  • 일 필드: 해당 월의 마지막 날
  • 요일 필드: 해당 월의 마지막 특정 요일
0 0 L * *      → 매월 마지막 날 자정
0 0 ? * 5L     → 매월 마지막 금요일 자정
0 0 L-3 * *    → 매월 마지막 날로부터 3일 전

3. W (Weekday) - 평일

  • 의미: 지정된 날짜에 가장 가까운 평일 (월~금)
0 0 15W * *    → 15일과 가장 가까운 평일
               (15일이 토요일이면 14일 금요일에 실행)
               (15일이 일요일이면 16일 월요일에 실행)

4. # (해시) - N번째 요일

  • 형식: 요일#N (N번째 특정 요일)
0 0 ? * 2#1    → 매월 첫 번째 월요일
0 0 ? * 5#3    → 매월 세 번째 금요일
0 0 ? * 6#2    → 매월 두 번째 토요일

 

728x90
반응형
LIST