개발자
⏱️ Cron 표현식 생성기·해석기
크론 표현식을 입력하면 한국어 한 줄 해석과 다음 실행 시각을 보여줍니다. 반대로 빌더에서 분·시·일·월·요일을 골라 표현식을 만들 수도 있습니다.
현재 시각을 불러오는 중…
표준 5필드 cron 기준입니다. 다음 실행 시각은 브라우저(이 기기)의 현재 시간으로 계산하며, 한국에서 접속하면 KST(UTC+9)입니다. 서버는 자체 타임존을 쓰므로 실제 환경의 TZ 설정과 다를 수 있습니다.
cron 5필드 구조
표준 cron은 공백으로 구분된 5개 필드로 시각을 표현합니다. 왼쪽부터 분·시·일·월·요일 순서입니다.
0 9 * * 1-5 = 분 0, 시 9, 일 매일, 월 매월, 요일 월~금 → 평일 오전 9시. 초(second) 필드는 표준 cron에 없습니다(6필드는 Quartz·일부 라이브러리 확장).특수문자 (* / , -) 의미
| 기호 | 의미 | 예시 |
|---|---|---|
| * | 해당 필드의 모든 값 | 시 칸의 * = 매시 |
| */n | n 단위마다 (스텝) | */15 (분) = 0,15,30,45분 |
| a-b | a부터 b까지 범위 | 1-5 (요일) = 월~금 |
| a,b,c | 여러 값 나열 (리스트) | 0,30 (분) = 정각·30분 |
| a-b/n | 범위 안에서 n 단위마다 | 9-18/3 (시) = 9,12,15,18시 |
L(말일)·W(가까운 평일)·#(N번째 요일)·?는 표준 cron에는 없고 Quartz 등 일부 구현에만 있습니다. 이 도구는 표준 5필드(* / , -)만 처리합니다.요일·월 별칭과 @-축약
자주 쓰는 주기는 @ 별칭으로 줄여 쓸 수 있습니다. 이 도구는 입력 시 자동으로 5필드로 풀어 해석합니다.
@hourly
0 * * * *
매시 정각
@daily
0 0 * * *
매일 자정 (=@midnight)
@weekly
0 0 * * 0
매주 일요일 0시
@monthly
0 0 1 * *
매월 1일 0시
@yearly
0 0 1 1 *
매년 1/1 0시 (=@annually)
@reboot
—
부팅 시 1회 (시각 계산 불가)
MON·SUN 같은 영문 약어와JAN~DEC 월 약어는 일부 구현만 지원하므로, 호환을 위해 숫자 사용을 권장합니다.일과 요일 동시 지정 시 OR 규칙
일(3번째)과 요일(5번째)을 둘 다 *가 아닌 값으로 지정하면, 표준 cron은 두 조건을 OR로 묶습니다 — 둘 중 하나라도 맞으면 실행합니다.
0 0 13 * 5 → 매월 13일 또는 매주 금요일 자정.결과적으로 13일과 금요일이 모두 트리거되며, 13일의 금요일에만 도는 것이 아닙니다.
둘 중 하나만 쓰려면 다른 칸을
*로 두세요.요일을 다시 확인해 빠져나가는 방식이 일반적입니다.Quartz·클라우드와 다른 점
| 환경 | 필드 수 | 요일 범위 | 특이점 |
|---|---|---|---|
| 표준 cron (이 도구) | 5 | 0-7 (0·7=일) | 일·요일 OR, 초 없음 |
| Quartz (Java) | 6~7 | 1-7 (1=일) | 초 필수, L·W·# 지원, 일·요일에 ? 필요 |
| Spring @Scheduled | 6 | 0-7 | 맨 앞에 초 필드 추가 |
| AWS EventBridge | 6 | 1-7 (1=일) | 연도 필드, 일·요일 중 하나는 ? |
| Kubernetes CronJob | 5 | 0-7 | 표준과 동일, UTC 기본 |
UTC가 기본이므로, KST 기준으로 9시간을 빼서 등록해야 합니다.자주 묻는 질문 (FAQ)
Q1. 크론 표현식 읽는 법은?
왼쪽부터 분 · 시 · 일 · 월 · 요일 5칸으로 읽습니다. 예를 들어 30 14 * * 1은 분=30, 시=14, 일=*(매일), 월=*(매월), 요일=1(월요일) → 매주 월요일 14시 30분입니다. *는 "모든 값", */5는 "5단위마다", 1-5는 "1부터 5까지", 1,15는 "1과 15"를 뜻합니다.
Q2. 매일 특정 시간에 실행하는 크론은?
분과 시만 고정하고 나머지를 *로 둡니다. 매일 오전 9시는 0 9 * * *, 매일 자정은 0 0 * * *, 매일 오후 6시 30분은 30 18 * * *입니다. 시는 0~23(24시간제)으로 적습니다. 오후 2시는 14, 밤 11시는 23입니다.
Q3. 평일에만 실행하려면 어떻게 하나요?
요일 칸에 1-5(월~금)를 넣습니다. 평일 오전 9시는 0 9 * * 1-5입니다. 요일은 0=일요일, 1=월요일 … 6=토요일이며, 주말만 실행하려면 0,6을 씁니다. 토요일·일요일 출근일 같은 예외는 cron 한 줄로 표현하기 어려워, 보통 스크립트 안에서 공휴일을 추가로 걸러냅니다.
Q4. 0 0 * * *는 무슨 뜻인가요?
분=0, 시=0, 나머지 전부 * → 매일 자정(00:00)에 1회 실행입니다. 흔히 일일 배치·백업·로그 정리에 씁니다. 비슷하게 0 * * * *는 매시 정각, * * * * *는 매분 실행입니다. @daily 별칭도 같은 의미입니다.
Q5. 요일에서 0과 7의 차이는?
둘 다 일요일입니다. 표준 cron(Vixie)은 요일을 0~7로 받고, 0과 7을 모두 일요일로 취급합니다(0~6이 일~토, 7은 0의 별칭). 따라서 0 0 * * 0과 0 0 * * 7은 동일하게 매주 일요일 자정입니다. 이 도구는 입력의 7을 내부적으로 0으로 바꿔 처리합니다.
Q6. 일과 요일을 동시에 지정하면 어떻게 되나요?
표준 cron은 OR(둘 중 하나라도 맞으면 실행)입니다. 0 0 13 * 5는 "매월 13일" 또는 "매주 금요일"에 실행되어, 13일의 금요일뿐 아니라 모든 13일과 모든 금요일에 돌아갑니다. 한쪽만 제한하려면 다른 칸을 *로 두면 됩니다. AND를 원하면 cron 한 줄로는 불가능해 스크립트 쪽에서 날짜를 다시 확인해야 합니다.