Cron 표현식은 짧지만 한눈에 읽기 어렵습니다. */15 9-17 * * 1-5가 정확히 언제 실행되는지 확인하려고 문서를 뒤지는 대신, 이 도구에 붙여넣으면 문장으로 풀어 보여주고 실제 다음 실행 시각까지 계산해 줍니다.
필드 문법
표준 cron은 왼쪽부터 분·시·일(날짜)·월·요일 순서로 5개 필드를 씁니다. 이 도구는 맨 앞에 초 필드를 더한 6필드 형식도 인식합니다(초·분·시·일·월·요일).
- 분: 0 ~ 59
- 시: 0 ~ 23
- 일(날짜): 1 ~ 31
- 월: 1 ~ 12 또는 JAN ~ DEC
- 요일: 0 ~ 7 (0과 7 모두 일요일) 또는 SUN ~ SAT
- 초 (6필드일 때만): 0 ~ 59
각 필드에는 다음 문법을 쓸 수 있습니다.
*— 모든 값 (“매 분”, “매 시”)5— 정확히 그 값1-5— 범위 (월요일부터 금요일)*/15— 간격 (0부터 시작해 15씩 증가: 0, 15, 30, 45)1,15,30— 쉼표로 나열한 목록
자주 쓰는 매크로도 지원합니다: @yearly(0 0 1 1 *), @monthly(0 0 1 * *), @weekly(0 0 * * 0), @daily(0 0 * * *), @hourly(0 * * * *). @reboot은 정해진 시각이 없어 지원하지 않습니다.
Unix cron · Quartz · 클라우드 스케줄러의 문법 차이
“cron 표현식”이라고 불러도 시스템마다 문법이 조금씩 다릅니다.
- Unix cron (crontab): 표준 5필드. 요일은 0 ~ 7(0과 7 모두 일요일)이고, 필드는 값·범위·목록·간격(
*/n)만 지원합니다. - Quartz (Java 스케줄러): 6 ~ 7필드로 맨 앞에 초, 맨 뒤에 연도(선택)가 붙습니다. 요일 값이 1 ~ 7(1=일요일)로 Unix cron과 다르고,
L(그 달·주의 마지막),W(가장 가까운 평일),#(예:6#3= 셋째 주 금요일),?(day-of-month·day-of-week 중 하나를 비워둘 때) 같은 Unix cron에 없는 기호를 씁니다. 또한 day-of-month와 day-of-week에 동시에*를 쓸 수 없습니다. - 클라우드 스케줄러(AWS EventBridge, Google Cloud Scheduler 등): 대체로 Unix cron과 비슷하지만 세부 규칙이 다른 경우가 있습니다. 예를 들어 AWS EventBridge는 Quartz처럼 6필드(초 없이 분부터 시작해 연도가 붙는 방식)를 쓰고 day-of-month와 day-of-week 중 하나에는 반드시
?를 넣어야 합니다.
이 도구는 표준 5·6필드(초가 맨 앞) 문법만 검증하고 설명합니다. Quartz나 특정 클라우드 서비스 전용 기호(L·W·#·?, 연도 필드 등)는 지원하지 않으므로, 그 서비스에 실제로 등록하기 전에는 해당 서비스 문서로 다시 한번 확인하세요.
서머타임(DST)에서 주의할 점
타임존을 정해 다음 실행 시각을 계산할 때, 서머타임이 있는 지역이라면 다음 두 가지를 알아 두면 좋습니다.
- 시작일의 빈 시각: 서머타임이 시작하는 날은 시계가 한 시간 앞으로 건너뛰어 특정 시각(흔히 오전 2시대)이 아예 존재하지 않습니다. 이 도구가 계산에 쓰는 날짜 라이브러리는 이런 시각을 서머타임 적용 전 오프셋으로 해석해 보여줍니다.
- 종료일의 중복 시각: 서머타임이 끝나는 날은 시계를 한 시간 되돌리면서 같은 시각이 두 번 나타납니다. 이 도구는 그 시각을 한 번만 보여줍니다.
새벽 1시 ~ 3시 사이에 실행되도록 예약한 작업이 있다면, 서머타임이 바뀌는 날짜 근처의 실행 시각을 이 도구로 한 번 확인해 보는 것을 권합니다.