크론 표현식 해석기 — cron 식을 사람말로, 다음 실행 시각 5회
cron 표현식 해석 (한국어·영어 풀이, 5·6필드, 다음 실행 5회, 시간대)
브라우저에서 처리 · 서버로 전송되지 않음
5필드 형식: 분 시 일 월 요일 · 6필드 형식: 초 분 시 일 월 요일
5분마다
사람말로 풀이
5분마다
다음 실행 시각 5회
소개
*/5 * * * *처럼 짧은 cron 표현식은 쓴 사람도 몇 달 뒤에는 헷갈립니다. 이 도구는 표현식을 입력하면 사람이 읽는 문장으로 풀어 주고, 선택한 시간대 기준으로 앞으로 실제로 실행되는 시각 5개를 계산해 보여 줍니다. 풀이 문장은 오픈소스 cronstrue 라이브러리를 사용합니다.
사용법
- cron 표현식을 입력하거나 예시 버튼을 누릅니다. 5필드와 초가 붙은 6필드를 모두 받습니다.
- “사람말로 풀이” 영역에서 의미를 확인합니다.
- 시간대를 고르면 다음 실행 시각 5회가 그 시간대 기준으로 다시 계산됩니다. 기본값은 브라우저의 시간대입니다.
- 별칭(
@daily등)을 쓰면 해석된 표준 표현식이 함께 표시됩니다.
기준
- 필드 순서: 5필드는 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7), 6필드는 앞에 초(0-59)가 더해집니다. 요일은 0과 7이 모두 일요일이고 1이 월요일입니다(Unix cron·Spring 기준). Quartz의 1=일요일 번호와는 다릅니다.
- 한 필드에
*, 숫자, 범위a-b, 목록a,b, 간격*/n·a-b/n·a/n을 쓸 수 있고, 월과 요일은JAN,MON같은 영문 약어도 됩니다. 일과 요일에는?도*와 같게 처리합니다. - 별칭:
@yearly(0 0 1 1 *),@monthly(0 0 1 * *),@weekly(0 0 * * 0),@daily(0 0 * * *),@hourly(0 * * * *). - 일과 요일이 모두
*가 아니면 둘 중 하나만 맞아도 실행합니다. - 다음 실행은 선택한 시간대의 시계를 한 필드씩 건너뛰며 직접 계산하고, 최대 8년 앞까지 찾습니다. 2월 30일처럼 영원히 오지 않는 날짜는 안내 문구를 보여 줍니다.
- 잘못된 표현식은 어느 필드의 어떤 값이 문제인지 알려 줍니다.
예시
| 표현식 | 풀이 |
|---|---|
*/5 * * * * |
5분마다 |
0 9 * * 1-5 |
평일 오전 9시 |
0 0 9 * * 1-5 |
6필드: 평일 오전 9시 0분 0초 |
30 2 1 * * |
매월 1일 오전 2시 30분 |
참고
- 서버 시간대와 브라우저 시간대가 다르면 실제 실행 시각도 달라지므로 서버가 쓰는 시간대를 골라 확인하세요.
- 매 분이나 매 초처럼 촘촘한 표현식은 다음 5회가 곧바로 이어서 나옵니다.
자주 묻는 질문
5필드와 6필드는 무엇이 다른가요?
5필드는 분 시 일 월 요일 순서이고, 6필드는 맨 앞에 초가 붙어 초 분 시 일 월 요일 순서입니다. 리눅스 crontab은 5필드이고 Spring의 @Scheduled는 초를 포함한 6필드를 씁니다. 필드 수로 자동 구분합니다. 요일 번호는 Unix·Spring과 같이 0과 7이 일요일, 1이 월요일입니다. Quartz는 1이 일요일, 7이 토요일이라 숫자 요일이 하루씩 어긋나므로, 물음표(?)가 들어간 6필드 식에 숫자 요일이 있으면 화면에 경고를 띄웁니다.
Quartz 표현식도 해석할 수 있나요?
요일을 MON, FRI 같은 영문 약어로 쓴 6필드 식은 그대로 해석됩니다. 숫자 요일은 Quartz(1=일요일)와 이 도구(0·7=일요일, 1=월요일)의 번호가 달라 하루씩 어긋나니, 약어로 바꾸거나 숫자에 1을 빼서 넣으세요. Spring용 식이라면(Spring도 ?를 받아요) 이 경고는 해당하지 않습니다. 맨 끝에 연도가 붙은 7필드 형식과 L, W, # 표기는 지원하지 않습니다.
일과 요일을 둘 다 지정하면 어떻게 되나요?
전통적인 cron 규칙대로 둘 중 하나라도 맞으면 실행합니다. 예를 들어 0 0 13 * 5는 매월 13일 또는 매주 금요일 0시입니다. 둘 중 하나가 *이면 다른 쪽만 조건이 됩니다.
서머타임 구간에서는 어떻게 계산하나요?
선택한 시간대의 벽시계 시각 기준으로 계산합니다. 서머타임으로 건너뛰어 존재하지 않는 시각은 그날 실행에서 빠지고, 같은 시각이 두 번 있는 날은 먼저 오는 쪽에서 한 번만 실행합니다. 실제 스케줄러는 구현에 따라 다르게 동작할 수 있습니다.
L, W, # 같은 확장 표기는 지원하나요?
지원하지 않습니다. 숫자, 범위(-), 목록(,), 간격(/), *와 ?, 월·요일 영문 약어(JAN, MON 등), @hourly·@daily·@weekly·@monthly·@yearly만 해석합니다. 지원하지 않는 표기는 오류로 알려 드립니다.