Cron 표현식 파서

형식: 분 시 일 월 요일

crontab을 물려받았는데 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *로 가득합니다. 이 파서는 표준 5필드 cron 표현식을 받아 쉬운 영어 설명(“every 2 hours on weekdays”)과 실제로 실행될 다음 5회 시각을 반환합니다. 레거시 스케줄을 이해하고 새 스케줄을 배포 전에 검증하는 데 유용합니다.

cron 표현식 파싱 방법

  1. 1

    표현식 붙여넣기

    표준 5필드 표현식(`* * * * *`): 분, 시, 일(월 중), 월, 요일.

  2. 2

    영어 설명 읽기

    파서가 각 필드를 쉬운 영어로 다시 써 줍니다. 예: "At minute 0, every 2 hours, on day(s) of week 1-5."

  3. 3

    다음 실행 미리보기로 검증

    다가오는 5회 실행 시각. 의도와 맞지 않으면 표현식을 다듬으세요.

  4. 4

    잘못된 필드 수정

    필드 수가 잘못되었거나 값이 범위를 벗어난 표현식은 문제의 필드를 알려 주는 오류와 함께 거부됩니다.

각 필드 해석

각 필드에는 고유한 유효 범위와 특수 문자가 있습니다:

필드 범위 지원되는 와일드카드
0-59 * , - /
0-23 * , - /
일(월 중) 1-31 * , - /
1-12 * , - /
요일 0-7 * , - /
  • * = 모든 값(분 필드의 *는 매분을 의미).
  • 1,5,10 = 값 목록.
  • 1-5 = 값 범위.
  • */15 또는 0-45/15 = 스텝. 필드 범위의 시작점부터 계산합니다.
  • 요일 07은 모두 일요일이므로 두 관례 모두 허용됩니다. JAN, MON 같은 월·요일 이름은 허용되지 않으니 숫자를 사용하세요.

해석된 예시

표현식 영어 설명
0 */2 * * 1-5 At minute 0 every 2 hours, Monday through Friday
15 4 1 * * At 04:15 on the 1st day of every month
*/30 8-18 * * * Every 30 minutes between 08:00 and 18:59
0 0 1,15 * * At midnight on the 1st and 15th of every month
0 22 * * 0 At 22:00 every Sunday

파서가 받아들이는 것

  • 정확히 5개 필드: 분, 시, 일(월 중), 월, 요일. 초(6필드) 또는 연도(7필드)가 포함된 Quartz 표현식은 거부됩니다.
  • 유효 범위: 각 값은 자기 필드 범위 안에 있어야 합니다(예: 분 0-59, 시 0-23, 일 1-31, 월 1-12, 요일 0-7).
  • 양수 스텝: / 뒤의 값은 양수여야 합니다(*/0은 거부).
  • 이름 붙은 단축어 없음: @daily, @reboot 같은 단축어는 받지 않습니다. 먼저 5필드 형태로 풀어 주세요(예: @daily = 0 0 * * *).

일(월 중)과 요일을 함께 쓸 때

일(월 중)과 요일을 모두 지정하면, 이 파서는 둘 다 일치할 때만 실행을 예약합니다. 따라서 0 0 1 * MON은 1일이 월요일인 날에만 실행됩니다. 대부분의 Linux cron 구현은 이 두 필드를 OR로 취급(둘 중 하나만 맞아도 실행)하므로, 실제 사용하는 스케줄러에 맞춰 표현식을 다시 확인하세요.

시간대 참고

미리보기의 시각은 서버 시계(UTC) 기준으로 계산됩니다. crontab이 다른 시간대의 머신에서 실행 중이라면, 여기에 표시된 시각이 그 머신의 시각과 다를 수 있습니다.

자주 묻는 질문

아니요. 표준 5필드 표현식만 받아들입니다. 초(6필드) 또는 연도(7필드)가 포함된 Quartz 표현식은 오류와 함께 거부됩니다.

보통 다음 중 하나입니다: 미리보기가 서버 시계(UTC)를 쓰는데 crontab이 다른 시간대에서 실행되는 경우, 일(월 중)과 요일을 모두 지정한 경우(이 파서는 둘 다 일치해야 함), 또는 스텝 값이 매 시간·매일의 시작에서 다시 시작되는 경우입니다.

네, Kubernetes가 사용하는 표준 5필드 표현식이라면 가능합니다(기본적으로 UTC). 다만 이곳의 미리보기는 서버 시계(UTC)를 사용하므로, 클러스터가 다른 시간대에서 실행되면 시각이 다를 수 있습니다.

Linux cron은 이름 붙은 단축어를 받아들입니다: @reboot(시작 시), @yearly / @annually(0 0 1 1 *), @monthly, @weekly, @daily, @hourly. 이 파서는 이를 받지 않으므로, 단축어를 동등한 5필드 표현식으로 풀어서 붙여넣으세요.

관련 도구