본문으로 건너뛰기
OpsKit

Cron 표현식 해석기

cron 표현식을 붙여넣으면 실제로 언제 실행되는지 보여줍니다. 각 필드를 분해해 설명하고, 스케줄러가 쓰는 타임존 기준으로 실행 시각을 계산합니다. cron 사고의 대부분이 바로 이 타임존에서 나옵니다.

자주 쓰는 스케줄

다음 실행 시각

필드 분해

필드매칭
00
99
*모든 값
*모든 값
요일1-5월, 화, 수, 목, 금

전부 브라우저 안에서 처리됩니다. 이 페이지는 정적 파일입니다. 입력한 내용은 탭 안에만 머물고 서버로 전송되지 않으며 창을 닫으면 사라집니다. 실제 토큰이나 설정을 붙여넣어도 안전합니다.

이럴 때 씁니다

  • 쿠버네티스 CronJob을 작성하면서 UTC 9시가 아니라 한국 시간 9시에 도는지 확인할 때.
  • 물려받은 crontab에서 30 2 * * 0 이 무슨 뜻인지 아무도 기억하지 못할 때.
  • 배치 작업과 백업 시간대가 다음 달에 겹치지 않는지 확인할 때.

실제 예제

평일 오전 9시

입력
0 9 * * 1-5
결과
월–금 09:00

요일은 0–6이고 일요일이 0입니다. 0과 7 모두 일요일로 인정됩니다.

업무 시간에 15분마다

입력
*/15 9-18 * * 1-5
결과
평일 09:00, 09:15 … 18:45

간격은 지정한 범위 안에서만 적용되므로 밤새 돌지 않고 18:45에 멈춥니다.

많이들 헷갈리는 표현식

입력
0 0 1 * MON
결과
매달 1일 그리고 매주 월요일

두 날짜 필드를 모두 지정하면 cron은 AND가 아니라 OR로 처리합니다.

자주 틀리는 부분

컨테이너가 내 타임존일 거라 가정하는 것

timeZone 을 지정하지 않은 쿠버네티스 CronJob은 컨트롤러의 타임존, 보통 UTC를 따릅니다. 09:00으로 적으면 한국 시간 18:00에 돕니다.

시 필드의 `*/5` 를 다섯 시간마다로 읽는 것

간격은 0부터 전체 범위를 나눕니다. 시 필드의 */5 는 0, 5, 10, 15, 20시를 뜻하지 지금부터 5시간마다가 아닙니다.

일과 요일을 함께 지정하는 것

둘 다 좁히면 실행 횟수가 줄어드는 게 아니라 늘어납니다. 합집합을 원하는 게 아니라면 한쪽은 * 로 두세요.

자주 묻는 질문

cron 표현식은 필드가 몇 개인가요?

표준 유닉스 cron과 쿠버네티스 CronJob은 5개입니다. 분, 시, 일, 월, 요일 순입니다. AWS EventBridge는 연도 필드가 붙어 6개이고 두 날짜 필드 중 하나에 ? 를 요구합니다. Quartz는 맨 앞에 초가 붙어 6~7개입니다.

쿠버네티스 CronJob이 왜 엉뚱한 시간에 도나요?

spec.timeZone 을 설정하지 않으면 kube-controller-manager의 타임존, 대개 UTC로 해석됩니다. 명시적으로 지정하거나, UTC 기준으로 적고 그 사실을 문서에 남기세요.

@daily 는 무슨 뜻인가요?

0 0 * * *, 즉 매일 자정의 축약형입니다. @hourly, @weekly, @monthly, @yearly 도 있습니다. @reboot 은 성격이 달라서 부팅 시 실행되며 정해진 시각이 없습니다.

관련 도구