크론 표현식 생성기는 만든 표현식이 실제로 언제 도는지 믿을 수 있어야 쓸모가 있습니다. 이 페이지는 0 9 * * 1-5 같은 표준 5필드 유닉스 크론 표현식을 내 언어의 문장(한국어로는 "오전 09:00, 월요일부터 금요일까지")으로 풀어 쓰고, 다음 10회 실행 날짜를 나열합니다. 설명 문장만 보면 놓치기 쉬운 실수가 날짜를 보면 드러납니다. 주 1회인 줄 알았는데 13일에도 도는 작업, 31일이 없는 달을 조용히 건너뛰는 월간 작업이 대표적입니다.
crontab 한 줄, 쿠버네티스 CronJob의 schedule, GitHub Actions의 schedule 트리거, CI 파이프라인 타이머를 배포하기 전에 점검하려는 사람을 위한 도구입니다. 표현식을 직접 입력하거나 설정 파일에서 가져온 것을 고쳐도 되고 시각 빌더로 만들어도 됩니다. 다섯 필드마다 매번·N마다·특정 값·범위 중 방식을 고르고 칩으로 값을 선택하며, 필드 옆 토큰에 실제 문법이 그대로 표시되어 빌더와 텍스트가 양방향으로 동기화됩니다.
표현식은 브라우저 안에서 croner 라이브러리로 해석하고 cronstrue로 설명하며, 번역이 있는 언어는 페이지 언어로 설명합니다. 입력한 내용은 서버로 전송되지 않습니다. 다음 실행 시각은 선택한 IANA 시간대(기본값은 브라우저 시간대)의 현재 시각에서 계산하므로 실제로 작업이 도는 머신의 시간대를 골라 주세요.
사용 방법
예제, 붙여넣기, 빌더 중 하나로 시작
5분마다, 평일 오전 9시, 매월 1일 같은 예제를 고르거나, 표현식을 붙여 넣거나, 분·시·일·월·요일 순서로 다섯 필드를 직접 입력합니다. 입력하는 즉시 결과가 바뀌며 누르는 버튼은 없습니다.
빌더로 필드별 모양 잡기
필드마다 매번, N마다, 특정 값, 범위 중 하나를 고릅니다. 특정 값을 고르면 분(0-59)·시·일과 내 언어의 월·요일 이름 칩이 나오고 눌러서 켜고 끌 수 있으며, 범위는 시작·끝 목록으로 고릅니다. 바꿀 때마다 위의 표현식이 다시 쓰이고, 표현식을 고치면 빌더가 따라 바뀝니다.
설명을 읽고 시간대 고르기
결과 아래 문장이 이 스케줄이 하는 일을 쉬운 말로 설명합니다. 작업이 실제로 도는 머신의 IANA 시간대를 고르세요. 표현식이 잘못되었으면 입력창 아래 메시지가 어느 부분이 문제인지 알려 줍니다. 예를 들어 분에 61을 넣으면 범위를 벗어났다고 나옵니다.
다음 10회 실행 확인
문장만 읽지 말고 날짜를 보세요. 첫 실행이 기대한 시점인지, "3시간 후", "내일" 같은 상대 시각과 함께 보이는 실행 사이 간격이 의도한 주기인지 확인합니다.
필요한 형식으로 복사
표현식만, crontab 한 줄, (고른 timeZone이 들어간) 쿠버네티스 CronJob 조각, GitHub Actions schedule 블록 중 원하는 것을 복사하거나, 공유 링크로 표현식과 시간대를 동료에게 보낼 수 있습니다.
작동 원리
다섯 개의 필드
고전적인 crontab 항목은 시간 필드 다섯 개 뒤에 명령이 옵니다. 현재 분이 다섯 필드와 모두 맞으면 작업이 실행됩니다(일과 요일만 아래의 예외가 있습니다). crontab 유틸리티는 POSIX(IEEE Std 1003.1)에 규정되어 있고, 단계 연산자 /와 MON 같은 월·요일 이름은 Vixie cron에서 나온 확장으로 현재 대부분의 구현이 지원합니다.
이 도구는 공백으로 구분된 정확히 5개 필드만 받습니다. 초가 붙은 6필드 표현식 등은 다섯 필드만 쓸 수 있다는 메시지와 함께 거부됩니다. @daily 같은 매크로도 한 필드라서 거부됩니다.
| 필드 | 허용 값 | 연산자와 참고 |
|---|---|---|
| 분 | 0-59 | * 전체, , 목록, - 범위, / 단계 |
| 시 | 0-23 | 24시간제, 오전/오후 없음 |
| 일 | 1-31 | 해당 달에 없는 날짜는 그 달에 실행되지 않음 |
| 월 | 1-12 또는 JAN-DEC | 이름은 대소문자를 구분하지 않음 |
| 요일 | 0-6 또는 SUN-SAT | 0과 7 모두 일요일. 0 9 * * 7이 일요일에 실행되는 것을 도구에서 확인할 수 있음 |
일과 요일은 OR로 묶입니다
일 필드와 요일 필드가 모두 *로 시작하지 않으면 Vixie 계열 크론은 둘 다 맞을 때가 아니라 하나라도 맞을 때 실행합니다. 그래서 0 0 13 * 5는 "13일 자정, 그리고 매주 금요일 자정"이지 "13일의 금요일"이 아닙니다. 어느 한쪽이 */10처럼 *로 시작하면 두 필드는 AND로 결합되며, 이 페이지는 그 경우 AND 안내를 표시합니다.
"13일의 금요일"이나 "마지막 금요일"은 크론만으로 정확히 표현할 수 없습니다. 더 넓은 패턴(예: 매주 금요일)으로 잡고 스크립트 안에서 날짜를 검사하거나, 둘째 금요일을 뜻하는 5#2 같은 확장을 쓰면 됩니다. 이 도구의 파서는 5#2를 받아들이지만 모든 크론 구현에서 통하는 문법은 아닙니다.
단계(step)와 범위가 실제로 만드는 값
*/n은 필드 범위의 시작부터 n 간격으로 값을 고른다는 뜻이고, 9-17/2처럼 범위에 붙이면 범위의 시작부터 셉니다. 단계는 시간이 바뀌어도 이어지지 않습니다. */7 * * * *는 매시 0, 7, 14, 21, 28, 35, 42, 49, 56분에 실행되고 다음 시각의 0분에 다시 실행되므로 56분과 다음 0분 사이는 4분입니다. 단위를 나누어떨어지게 하지 않는 주기는 일반 크론 표현식으로 만들 수 없습니다.
필드가 허용하는 값보다 큰 단계는 오류입니다. */90 * * * *는 분 필드의 최대 단계가 60이라 거부됩니다. */7 * * * *의 쉬운 설명은 "7분마다"라고 나오므로, 56분 뒤에는 4분 만에 다시 실행된다는 사실을 날짜별 실행 목록에서 확인해야 합니다.
*/15 * * * * 15분마다
0 9-17/2 * * 1-5 평일 09:00, 11:00, 13:00, 15:00, 17:00
0 0 1 */3 * 1월, 4월, 7월, 10월 1일 자정
0 0 * * 0,6 토요일과 일요일 자정Quartz와 AWS EventBridge는 다릅니다
참고용 배경 설명이며 이 페이지가 해석하는 문법은 아닙니다. Quartz(Java) 표현식은 초가 맨 앞에 오는 6필드 또는 연도까지 붙은 7필드이고, 일 필드나 요일 필드 중 하나에 ?를 반드시 써야 합니다. AWS EventBridge 크론은 분, 시, 일, 월, 요일, 연도의 6필드이며 역시 두 일 필드 중 하나에 ?가 필요합니다. 두 시스템은 요일을 일요일부터 1-7로 매기지만 고전 크론은 0-6입니다.
그래서 Quartz나 EventBridge 표현식을 그대로 붙이면 5필드 오류가 납니다. 먼저 초나 연도 필드를 빼고, ?는 *로 바꾸고, 요일 숫자를 다시 매기세요. 이 파서는 L, W, #, ?도 받지만, 고른 대상이 토큰을 지원하지 않으면 crontab·Kubernetes·GitHub 조각 위에 경고를 표시합니다.
실제 예시
0 9 * * 1-5오전 09:00, 월요일부터 금요일까지
2026-10-01 09:00
2026-10-02 09:00
2026-10-05 09:00
2026-10-06 09:00
2026-10-07 09:00페이지가 나열하는 10회 중 처음 5회이며, 현재 시각을 2026-10-01 00:00 UTC, 시간대를 UTC로 두고 계산한 값입니다. 주말(10월 3일, 4일)은 건너뜁니다.
0 0 13 * 5오전 12:00, 매월 13일, 금요일에
2026-10-02 00:00
2026-10-09 00:00
2026-10-13 00:00
2026-10-16 00:00
2026-10-23 00:00같은 기준 시각입니다. 2일, 9일, 16일, 23일은 금요일이고 13일은 화요일입니다. 두 조건이 모두 실행을 일으킵니다.
0 0 1 */3 *오전 12:00, 매월 1일, 3개월마다
2027-01-01 00:00
2027-04-01 00:00
2027-07-01 00:00
2027-10-01 00:00
2028-01-01 00:00같은 기준 시각입니다. 2026년 10월 1일 자정은 이미 지났으므로 첫 실행은 2027년 1월 1일입니다.
0 0 31 * *오전 12:00, 매월 31일
2026-10-31 00:00
2026-12-31 00:00
2027-01-31 00:00
2027-03-31 00:00
2027-05-31 00:0011월은 30일까지라 건너뛰고 2월과 4월도 마찬가지입니다. 스케줄러가 지원하면 L을 쓰고, 아니면 1일에 실행해서 스크립트에서 전월을 처리하세요.
0 0 9 * * 1분·시·일·월·요일 다섯 필드만 사용할 수 있습니다. 필드가 6~7개인 Quartz·AWS 형식은 지원하지 않습니다.초가 맨 앞에 붙은 Quartz 방식 배치입니다. 맨 앞의 초 필드를 빼서 0 9 * * 1로 바꾸면 됩니다.
자주 하는 실수
일과 요일을 동시에 지정
Vixie 계열 크론은 두 일 필드가 모두
*로 시작하지 않을 때만 OR로 묶습니다.0 0 1 * 1은 매달 1일과 매주 월요일에 실행되지만,0 0 */10 * 1은 AND가 되어 1일·11일·21일·31일이면서 월요일인 날만 실행됩니다. 페이지의 OR 또는 AND 안내를 확인하세요.크론 데몬이 내 시간대를 쓴다고 가정
서버, 컨테이너, CI 러너는 UTC로 설정된 경우가 많습니다. 이 페이지의 다음 실행 목록은 처음에 브라우저 시간대로 시작하므로, 여기서 09:00으로 보이는
0 9 * * *가 운영 환경에서는 다른 시각에 실행될 수 있습니다. 서머타임 전환 때는 건너뛴 시각과 반복된 시각을 처리하는 방식도 스케줄러마다 다르며, 이 페이지는 나열된 실행 사이에 오프셋 변경이 있으면 안내를 표시합니다. 실제 실행 스케줄러와 날짜를 대조하세요.한 시간을 나누어떨어지지 않는 주기
*/7 * * * *는 "7분마다"가 아닙니다. 56분 다음 실행은 4분 뒤인 0분입니다. 불규칙한 간격이 필요하면 실제 주기를 지원하는 스케줄러를 쓰거나, 매분 실행하고 스크립트가 판단하게 하세요.초나 연도 필드를 붙여 넣기
Quartz, Spring
@Scheduled, EventBridge 표현식은 필드 수가 다릅니다. 6필드 표현식을 5필드 crontab에 넣으면 오류가 나거나, 더 나쁘게는 모든 필드가 한 칸씩 밀립니다.요일 숫자 0과 7, 1-7 체계
고전 크론에서 일요일은 0이고 7도 별칭으로 받습니다. Quartz와 EventBridge에서는 일요일이 1입니다. 시스템 사이에서 표현식을 옮길 때는
MON-FRI처럼 이름을 쓰면 어디서나 같은 뜻입니다.
자주 묻는 질문
5분마다 실행하는 크론 표현식은 어떻게 쓰나요?
*/5 * * * *를 씁니다. 분 필드의 */5는 매시 0, 5, 10분부터 55분까지 실행됩니다. 여기서 "5분마다" 예제를 눌러 다음 10회 실행 시각을 확인해 보세요.
0 0 * * *는 무슨 뜻인가요?
매일 0시 0분이라는 뜻으로, 스케줄러의 시간대 기준 하루에 한 번 자정에 실행됩니다. 이 페이지는 한국어로 "오전 12:00"이라고 설명합니다.
평일에만 실행하려면 어떻게 하나요?
요일 필드에 1-5를 넣습니다. 예를 들어 30 8 * * 1-5는 월요일부터 금요일까지 08:30에 실행됩니다. MON-FRI로 써도 됩니다.
왜 예상하지 못한 날에도 크론이 실행되나요?
두 일 필드를 확인하세요. Vixie 계열 크론은 어느 쪽도 *로 시작하지 않으면 OR로 계산해 0 0 1 * 1을 매달 1일과 매주 월요일에 실행합니다. */10처럼 *로 시작하는 필드는 AND로 바꾸므로, 페이지의 OR·AND 안내와 날짜별 실행 목록을 함께 확인하세요.
초 단위, Quartz 형식, AWS EventBridge도 지원하나요?
아니요. 이 페이지는 정확히 5필드만 받고 빌더도 그 다섯 필드를 편집합니다. Quartz와 EventBridge는 6~7필드와 ?를 쓰므로 5필드로 바꾼 뒤에 붙여 넣으세요.
@daily, @hourly, @reboot은 쓸 수 있나요?
아니요. 이 매크로들은 한 필드라서 이 페이지에서는 거부됩니다. 같은 뜻의 표현식을 직접 쓰세요. 매일은 0 0 * * *, 매시는 0 * * * *입니다.
입력한 표현식이 서버로 전송되나요?
아니요. 표현식은 브라우저 안에서 해석되고 설명되며, 입력한 내용은 서버로 전송되지 않습니다.
표현식 길이 제한이 있나요?
입력은 4 KiB로 제한되어 있어 실제 크론 한 줄에는 충분합니다. 다음 실행 시각은 10회까지 나열합니다.
더 깊이 읽기
마지막 업데이트:
