본문으로 바로가기

Cron 표현식 해설기

cron 표현식을 문장으로 풀어 주고, 고른 타임존 기준으로 다음 실행 시각을 최대 20개까지 보여 줍니다. 5필드와 초가 붙은 6필드를 읽습니다.

5개 필드

설명

오전 09:00, 월요일부터 금요일까지

다음 실행 시각

브라우저 타임존: UTC

유효한 표현식을 입력하면 다음 실행 시각을 보여줍니다.

필드 요약·치트시트

필드 요약·치트시트
필드의미값
초초 (6필드일 때만)0 ~ 59
분분0 ~ 59
시시0 ~ 23
일일(날짜)1 ~ 31
월월1 ~ 12 또는 JAN ~ DEC
요일요일0 ~ 7 (0과 7 모두 일요일) 또는 SUN ~ SAT

L·W·#·?처럼 Quartz(자바 스케줄러) 전용 기호는 지원하지 않습니다. 표준 5·6필드 문법만 다룹니다.

자주 쓰는 매크로

예시

입력한 내용은 이 브라우저 안에서만 처리되며 서버로 전송되지 않습니다. 어떻게 동작하나요?

0 9 * * *를 선택한 시간대의 매일 09시 일정으로 해석

*/15 9-17 * * 1-5를 넣으면 “15분마다, 오전 09:00부터 오후 05:59까지, 월요일부터 금요일까지”라는 문장과 함께 실제로 실행될 날짜와 시각이 차례로 나옵니다. 표현식을 서버에 등록하기 전에 뜻한 대로 읽히는지 확인하는 용도입니다.

사용 방법

  1. Cron 표현식 칸에 표현식을 넣습니다. 처음에는 0 9 * * 1-5가 들어 있습니다. 칸 아래 표시로 “5개 필드”로 읽었는지 “6개 필드 (맨 앞이 초)“로 읽었는지 알 수 있습니다.
  2. 설명에 표현식을 풀어 쓴 문장이 나옵니다. “표현식 복사”는 다듬은 표현식을 복사하고, 매크로를 넣었을 때는 필드로 풀어 쓴 형태를 복사합니다(예: @daily → 0 0 * * *).
  3. 다음 실행 시각에서 “개수”(1 ~ 20)와 “타임존”을 정합니다. 지금 시각 이후의 실행 시각이 그 타임존의 날짜와 시각으로 나옵니다.
  4. 필드 요약·치트시트의 “자주 쓰는 매크로”와 “예시” 버튼을 누르면 그 표현식이 입력 칸에 들어갑니다.

문법이 틀리면 어느 필드의 어떤 값이 문제인지 알려 줍니다. 60 * * * *를 넣으면 “분 필드의 “60”은(는) 허용 범위를 벗어났습니다.“가 나옵니다.

필드 문법

필드는 공백으로 나누고 5개 또는 6개여야 합니다. 5개면 분·시·일·월·요일 순서로, 6개면 맨 앞을 초로 읽습니다.

필드 값
초 (6필드일 때만) 0 ~ 59
분 0 ~ 59
시 0 ~ 23
일(날짜) 1 ~ 31
월 1 ~ 12 또는 JAN ~ DEC
요일 0 ~ 7 (0과 7 모두 일요일) 또는 SUN ~ SAT

각 필드에 쓸 수 있는 형태는 다음과 같습니다.

  • *: 모든 값
  • 5: 그 값 하나
  • 1-5: 범위. 시작이 끝보다 크면(5-1) 오류입니다
  • */15: 간격. 분 필드라면 0, 15, 30, 45분입니다
  • 5/15: 시작값이 있는 간격. 분 필드라면 5분부터 15분마다(5, 20, 35, 50분)입니다
  • 10-40/10: 범위 안의 간격. 분 필드라면 10, 20, 30, 40분입니다
  • 1,15: 쉼표로 나열한 목록. 위의 형태를 섞어 나열할 수 있습니다

매크로는 일곱 가지를 읽습니다. @yearly와 @annually는 0 0 1 1 *, @monthly는 0 0 1 * *, @weekly는 0 0 * * 0, @daily와 @midnight은 0 0 * * *, @hourly는 0 * * * *입니다. @reboot은 시스템이 켜질 때 한 번 실행하라는 뜻이라 계산할 시각이 없으므로 읽지 않습니다.

일(날짜)과 요일을 함께 지정하면

두 필드에 모두 *가 아닌 값을 넣으면 “둘 다 맞는 날”이 아니라 “둘 중 하나라도 맞는 날”에 실행됩니다. crontab 설명서에 적힌 Unix cron의 규칙이고, 이 도구의 다음 실행 시각도 그렇게 계산합니다.

0 0 13 * 5는 13일의 금요일을 뜻하지 않습니다. 타임존을 UTC로 두고 2026년 10월 10일에 계산하면 10월 13일(화), 10월 16일(금), 10월 23일(금) 순서로 나옵니다. 13일이면 요일과 상관없이, 금요일이면 날짜와 상관없이 실행되는 것입니다.

이 표현식의 설명은 “오전 12:00, 매월 13일, 금요일에”로 나와서 두 조건을 모두 채워야 하는 것처럼 읽힐 수 있습니다. 그래서 이런 표현식에는 설명 아래에 둘 중 하나라도 맞는 날에 실행된다는 안내가 함께 나옵니다. 실제 날짜는 다음 실행 시각 목록에서 확인하세요.

서머타임(DST)이 있는 타임존

서머타임을 쓰는 타임존을 고르면 시계가 바뀌는 날의 실행 시각이 평소와 다르게 나옵니다. America/New_York의 2026년 날짜로 계산한 결과입니다.

  1. 시작일에 없는 시각: 3월 8일에는 시계가 오전 2시에서 3시로 건너뛰어 오전 2시대가 없습니다. 30 2 * * *(매일 오전 2시 30분)는 이날만 오전 3:30:00으로 나오고 다음 날부터 다시 오전 2:30:00입니다. 건너뛰지 않고 한 시간 뒤로 밀려 표시되는 것입니다.
  2. 종료일에 두 번 오는 시각: 11월 1일에는 오전 1시대가 두 번 있습니다. 30 1 * * *처럼 시를 숫자로 정한 표현식은 이날 오전 1:30:00이 한 번만 나옵니다. 반면 0 * * * *처럼 시가 *인 표현식은 오전 1:00:00이 두 번 나옵니다.

실제 스케줄러가 이런 시각을 어떻게 처리하는지는 프로그램마다 다릅니다. 오전 1시에서 3시 사이에 도는 작업이 있다면 서버의 cron 문서도 함께 확인하세요.

참고 자료

자주 묻는 질문

*/7처럼 60을 나눌 수 없는 간격을 쓰면 정확히 7분마다 실행되나요?

아니요. 간격은 매시간 0분부터 다시 셉니다. */7 * * * *의 다음 실행 시각을 보면 0, 7, 14, …, 49, 56분에 실행되고 그다음은 다음 시각의 0분입니다. 56분과 0분 사이는 4분밖에 되지 않습니다. 시, 일, 월 필드의 간격도 같은 식으로 범위의 처음에서 다시 시작합니다.

0 0 30 2 *를 넣었더니 "달력에 없는 날짜라 한 번도 실행되지 않습니다"라고 합니다.

문법은 맞지만 그런 날짜가 없는 표현식입니다. 0 0 30 2 *는 필드마다 범위 안의 값이지만 2월 30일은 없으므로 실행될 날이 없습니다. 그래서 이 도구는 설명과 다음 실행 시각을 보여 주는 대신 오류로 알려 줍니다. 0 0 31 * *처럼 일부 달에만 있는 날짜는 오류 없이 31일이 있는 달만 골라 보여 줍니다.

요일을 MONDAY나 영어가 아닌 언어로 적어도 되나요?

안 됩니다. 이름은 영문 세 글자(SUN ~ SAT, JAN ~ DEC)만 읽고 대소문자는 가리지 않습니다. MONDAY를 넣으면 "요일 필드의 "MONDAY"은(는) 읽을 수 없는 값입니다."라는 오류가 나옵니다. 이름은 MON-FRI 같은 범위나 mon,wed 같은 목록에도 쓸 수 있지만, 월 이름은 월 필드에서만, 요일 이름은 요일 필드에서만 통합니다.

서버는 UTC인데 내 브라우저는 다른 시간대입니다. 타임존을 무엇으로 골라야 하나요?

cron이 실제로 도는 서버의 타임존을 고르세요. 0 9 * * 1-5를 "UTC"로 계산하면 목록에 오전 9:00:00이 나오고, 그 순간은 UTC보다 9시간 빠른 시간대(UTC+9)에서는 오후 6시입니다. UTC+9인 타임존으로 바꾸면 목록에는 똑같이 오전 9:00:00이 나오지만 그 순간은 UTC로 같은 날 0시입니다. 목록의 시각은 언제나 고른 타임존의 시각으로 표시되고, 처음 열었을 때는 "브라우저 타임존"에 적힌 값이 골라져 있습니다.

Quartz나 AWS의 cron 표현식도 그대로 넣을 수 있나요?

"cron 표현식"이라고 불러도 시스템마다 문법이 다릅니다. 이 도구가 읽는 것은 Unix cron의 5필드와, 그 앞에 초를 붙인 6필드뿐입니다. • Unix cron (crontab): 분·시·일·월·요일 5필드입니다. 요일은 0 ~ 7이고 0과 7이 모두 일요일입니다. • Quartz (자바 스케줄러): 맨 앞에 초가 있고 맨 뒤에 연도를 붙일 수 있어 6 ~ 7필드입니다. 요일은 1 ~ 7이고 1이 일요일이라 Unix cron과 숫자가 하나씩 어긋납니다. L(그 달이나 주의 마지막), W(가장 가까운 평일), #(6#3은 셋째 금요일), ?(일과 요일 가운데 정하지 않는 쪽에 쓰는 표시)처럼 Unix cron에 없는 기호를 씁니다. • AWS EventBridge: 분·시·일·월·요일·연도 6필드입니다. 초가 없고 끝에 연도가 있습니다. 요일은 1 ~ 7 또는 SUN ~ SAT이고, 일과 요일 가운데 한쪽에는 반드시 ?를 써야 합니다. L, W, #도 씁니다. • 그 밖의 클라우드 스케줄러: Google Cloud Scheduler처럼 Unix cron과 비슷한 문법을 쓰는 서비스도 세부 규칙이 다를 수 있습니다. 다른 시스템의 표현식을 그대로 붙여넣으면 오류가 나거나 다르게 읽힙니다. AWS 문서의 예시 0 10 * * ? *(매일 10시)는 6필드라서 이 도구가 맨 앞을 초로 읽고, 다섯 번째에 놓인 ?를 월 필드의 값으로 보아 "월 필드의 "?"은(는) 읽을 수 없는 값입니다."라는 오류를 냅니다. Quartz나 AWS용 표현식은 그 서비스의 문서나 콘솔에서 확인하세요.

사용한 오픈소스: cronstrue (MIT), cron-parser (MIT), Luxon (MIT)

최종 수정일: