정보처리기사/프로그래밍 언어 활용
Cron 표현식 정리
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