Cron 표현식 분석 및 다음 실행 시간
입력
| Cron 표현식 | 0 9 * * 1-5 |
|---|
Cron 표현식 분석 및 다음 실행 시간
5필드 cron 표현식이나 @단축어를 입력하면 스케줄 설명과 다음 세 번의 UTC 기준 실행 시간을 바로 확인할 수 있습니다.
입력
Cron 표현식
결과
값을 입력하면 계산 결과가 표시됩니다.
스케줄 설명
다음 3회 실행 시간 (UTC)
Cron 표현식이란?
Cron 표현식은 Unix 계열 시스템에서 반복 작업을 예약하는 다섯 개 필드로 구성된 문자열입니다. 스케줄러는 현재 시각이 다섯 필드 모두와 일치할 때 작업을 실행합니다. 형식은 다음과 같습니다.
| 필드 | 위치 | 허용 값 | 특수 문자 |
|---|---|---|---|
| 분 | 1 | 0–59 | * / , - |
| 시 | 2 | 0–23 | * / , - |
| 일 | 3 | 1–31 | * / , - |
| 월 | 4 | 1–12 | * / , - |
| 요일 | 5 | 0–7 (0과 7 = 일요일) | * / , - |
특수 문자
*– 해당 필드의 모든 값과 일치합니다 ("매 시간", "매일" 실행)*/n– 스텝; n번째마다 일치합니다 (예: 분 필드의*/15= 15분마다)a-b– 범위; a부터 b까지의 모든 값과 일치합니다 (예: 요일 필드의1-5= 월요일~금요일)a,b,c– 목록; 나열된 각 값과 일치합니다 (예: 일 필드의1,15= 1일과 15일)a-b/n– 스텝 범위; 예:10-50/10은 10, 20, 30, 40, 50과 일치
자주 쓰는 패턴
| 표현식 | 의미 |
|---|---|
* * * * * | 매 분 |
*/15 * * * * | 15분마다 |
0 * * * * | 매 시각 정각 |
0 9 * * 1-5 | 평일 오전 9시 UTC |
30 17 * * 5 | 매주 금요일 17:30 UTC |
0 0 1 * * | 매월 1일 자정 UTC |
0 0 1 1 * | 매년 1월 1일 자정 UTC |
0 0 * * 0 | 매주 일요일 자정 UTC |
@단축어
대부분의 cron 구현체는 편의를 위한 별칭을 지원합니다.
| 단축어 | 동등한 표현식 |
|---|---|
@yearly / @annually | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily / @midnight | 0 0 * * * |
@hourly | 0 * * * * |
일(day-of-month)과 요일(day-of-week)의 상호작용
일 필드와 요일 필드가 모두 제한되어 있는 경우(둘 다 *가 아닌 경우), cron은 OR 방식으로 동작합니다. 즉, 두 조건 중 하나라도 참이면 작업이 실행됩니다. 예를 들어:
0 0 1 * 1
이 표현식은 매월 1일 자정과 매주 월요일 자정 모두에 실행됩니다. 1일이 월요일인 경우에만 실행되는 게 아닙니다. 이 동작은 POSIX 명세에 정의되어 있으며, 가장 널리 쓰이는 구현체인 Vixie cron에서도 동일하게 적용됩니다.
두 필드 중 하나만 제한된 경우에는 나머지 필드가 영향을 미치지 않으며, 제한된 필드의 조건에 맞는 날에만 작업이 실행됩니다.
Cron 스케줄링의 동작 원리
스케줄러는 매 분마다 현재 시각이 다섯 필드와 모두 일치하는지 확인합니다. 일치하면 작업이 실행됩니다. 가장 작은 실행 간격이 1분이므로, 두 실행 사이의 최소 간격도 1분입니다.
기본적으로 스케줄러는 누락된 실행을 보충하지 않습니다. 서버가 예약된 시각에 오프라인 상태였다면 해당 실행은 건너뜁니다. Kubernetes CronJob의 경우 startingDeadlineSeconds 설정을 통해 일정 시간 내에 누락된 실행을 복구할 수 있습니다.
시간대 고려 사항
대부분의 cron 구현체는 서버의 로컬 시간대를 기준으로 표현식을 해석합니다. UTC로 설정된 서버는 UTC 기반 표현식이 나타내는 시각에 정확히 실행됩니다. 다른 시간대를 사용하는 서버는 그에 맞게 실행 시각이 이동합니다.
Kubernetes CronJob과 GitHub Actions 스케줄은 모두 UTC 기준으로 cron 표현식을 해석합니다. 이 계산기도 실행 시각을 UTC로 표시하므로, 시스템이 다른 시간대를 사용한다면 해당 시간대의 UTC 오프셋을 적용해 변환하세요.
자주 묻는 질문 (FAQ)
cron의 다섯 필드는 각각 무엇을 의미하나요?
cron 표현식은 공백으로 구분된 다섯 개의 필드로 구성됩니다. 순서대로 분(0–59), 시(0–23), 일(1–31), 월(1–12), 요일(0–7, 0과 7 모두 일요일)입니다. 각 필드에는 특정 값, 와일드카드(), 범위(1-5), 스텝(/15), 목록(1,15), 또는 이들의 조합(1-5/2)을 사용할 수 있습니다. @yearly, @monthly, @weekly, @daily, @hourly 같은 @단축어는 해당하는 5필드 표현식으로 자동 치환됩니다.
일(day-of-month)과 요일(day-of-week)을 함께 지정하면 어떻게 동작하나요?
일 필드와 요일 필드가 모두 제한(둘 다 *가 아닌 경우)되어 있으면, cron은 OR 방식으로 동작합니다. 즉, 두 조건 중 하나라도 충족되면 작업이 실행됩니다. 예를 들어 "0 0 1 * 1"은 매월 1일에도 실행되고 매주 월요일에도 실행됩니다. 1일이 월요일인 경우에만 실행되는 게 아닙니다. 두 필드 중 하나만 제한된 경우에는 해당 조건에 맞는 날에만 실행됩니다.
다음 실행 시간이 제 현지 시각으로 표시되나요?
이 계산기는 모든 실행 시각을 UTC 기준으로 표시합니다. Linux crontab, Kubernetes CronJob, GitHub Actions 스케줄 등 대부분의 cron 구현체는 서버의 로컬 시간대나 UTC를 기준으로 표현식을 해석합니다. 서버가 UTC로 설정되어 있다면 여기 표시된 시간과 정확히 일치합니다. 다른 시간대를 사용한다면 UTC 오프셋만큼 조정이 필요합니다.