Cron 표현식 정리
Cron 표현식은 주기적으로 작업을 예약할 때 사용하는 문자열 포맷으로, 각 필드는 특정 시간 단위를 의미합니다. 주요 사용 예는 리눅스의 cron, 각종 클라우드 스케줄러, 백엔드 작업 예약 등입니다.
기본 구조 및 필드
일반적으로 Cron 표현식은 5~7개의 필드로 구성됩니다. 가장 널리 쓰이는 5필드 형식은 다음과 같습니다.
필드 순서 | 필드명 | 허용 값 | 설명 |
---|---|---|---|
1 | 분 (Minute) | 0-59 | 몇 분에 실행할지 |
2 | 시 (Hour) | 0-23 | 몇 시에 실행할지 |
3 | 일 (Day) | 1-31 | 매월 며칠에 실행할지 |
4 | 월 (Month) | 1-12 또는 JAN-DEC | 몇 월에 실행할지 |
5 | 요일 (Day of week) | 0-6 또는 SUN-SAT | 무슨 요일에 실행할지 (0/7: 일요일) |
일부 시스템(Quartz 등)은 초(Seconds)와 연(Year) 필드를 추가해 6~7필드까지 지원합니다.
필드 순서 | 필드명 | 허용 값 |
---|---|---|
0 | 초 (Seconds) | 0-59 |
6 | 연 (Year) | 1970-2099 |
특수문자와 의미
- * : 모든 값 (예: * * * * * → 매 분마다)
- , : 여러 값 지정 (예: MON,WED,FRI)
- - : 범위 지정 (예: 1-5 → 1~5)
- / : 주기 지정 (예: */10 → 10분마다)
- ? : 특정 값 없음 (주로 일/요일 필드 중 하나에 사용, Quartz 등)
- L : 마지막 (예: L → 마지막 날/요일)
- W : 가장 가까운 평일 (예: 15W → 15일에 가장 가까운 평일)
- # : 몇 번째 무슨 요일 (예: 6#3 → 매월 세 번째 금요일)
예시와 해석
표현식 | 의미 |
---|---|
* * * * * | 매 분마다 |
0 * * * * | 매 시 정각 |
0 0 * * * | 매일 0시 정각 |
0 0 1 * * | 매월 1일 0시 정각 |
*/5 9-17 * * 1-5 | 평일(월~금) 9~17시 사이 5분마다 |
0 0/10 * * * ? | 매 10분마다 |
0 15 10 * * ? | 매일 10시 15분 |
0 15 10 L * ? | 매월 마지막 날 10시 15분 |
0 15 10 ? * 6L | 매월 마지막 금요일 10시 15분 |
0 15 10 ? * 6#3 | 매월 세 번째 금요일 10시 15분 |
0 0 12 1/5 * ? | 매월 1일부터 5일 간격으로 12시 정각 |
0 11 11 11 11 ? | 매년 11월 11일 11시 11분 |
참고/주의사항
- 월(Month)과 요일(Day of week)은 영문(대소문자 구분 없음)으로도 지정 가능 (예: JAN, MON)
- 일(Day)과 요일(Day of week) 필드는 동시에 지정할 수 없으며, 한쪽에는 ?를 사용
- 일부 시스템에서는 초(Seconds)와 연(Year) 필드가 필요하거나 지원되지 않을 수 있음
- 요일은 시스템에 따라 일요일이 0 또는 7로 표기될 수 있음
실전 활용 팁
- */n : n분/시간/일/월/요일마다 실행
- a,b,c : 여러 특정 값 지정
- a-b : 범위 지정
- a-b/n : a~b 범위 내에서 n 간격
- L, W, # 등은 Quartz 등 일부 엔진에서만 지원
예시로 보는 차이점
- * 10 * * * ? : 매 시각 10분 (1:10, 2:10, ...)
- 0/10 * * * ? : 10분마다 (1:10, 1:20, 1:30, ...)
대표적인 사용 예시
- 매일 자정: 0 0 * * *
- 매월 1일: 0 0 1 * *
- 매주 월요일 9시: 0 9 * * 1
- 매 5분마다: */5 * * * *
- 평일 오전 8~10시 매 10분: */10 8-10 * * 1-5
이와 같이 Cron 표현식은 반복 작업을 자동화하는 데 매우 강력하게 활용됩니다. 복잡한 스케줄도 다양한 특수문자와 필드 조합으로 쉽게 표현할 수 있습니다.
반응형
'CS > 기타' 카테고리의 다른 글
[대규모 시스템 설계 기초 2] 11장. 결제 시스템 파헤치기 (1) | 2024.04.26 |
---|---|
[대규모 시스템 설계 기초 2] 7장. 호텔 예약 시스템 파헤치기 (2) | 2024.04.23 |
Redis에 대해 알아보자 (자료구조, Cache) (0) | 2024.04.14 |
[소프트웨어 아키텍처 101] 챕터 12. 마이크로커널 아키텍처 스타일 (1) | 2024.02.12 |
[소프트웨어 아키텍처 101] 챕터 11. 파이프라인 아키텍처 스타일 (0) | 2024.02.12 |
댓글