Menu

Cron 표현식 생성기

cron 일정을 만들고 해석하며 다음 실행 시간을 미리 봅니다.

마지막 업데이트

프리셋
표현식
*/15
*
월의 일*
*
요일*
쉬운 설명유효함

15분마다

다음 5회 실행 (로컬 시간)
  • 12026-04-26 21:45 Sun
  • 22026-04-26 22:00 Sun
  • 32026-04-26 22:15 Sun
  • 42026-04-26 22:30 Sun
  • 52026-04-26 22:45 Sun

Cron 표현식이란?

Cron 표현식은 반복 스케줄을 짧게 표현하는 방식입니다. 원조 Linux 스케줄러인 Unix cron에서 쓰던 문법 그대로인데, 지금은 거의 모든 잡 러너에서 그대로 쓰입니다 — Kubernetes CronJob, GitHub Actions schedules, AWS EventBridge, Cloudflare Workers, Vercel cron, 그리고 대부분의 CI/CD 플랫폼까지요.

처음 보면 복잡해 보이지만 실제로는 공백으로 구분된 다섯 개 필드가 전부입니다: 분, 시, 일, 월, 요일. 각 필드에는 숫자, 리스트(1,15), 범위(9-17), 간격(*/5), 또는 와일드카드(*)를 넣을 수 있습니다. 좋은 cron 도구라면 이 표현식을 자연어로 풀어 보여주고, 다음 실행 시각도 미리 보여줘서 배포 전에 확인할 수 있게 해줘야 합니다.

일부 플랫폼은 기본 5필드 문법 앞에 *초* 필드를 붙이거나(Quartz, Spring, Kubernetes 6필드) 뒤에 *연도* 필드를 붙여 확장합니다. 표현식을 그대로 붙여넣기 전에 사용 중인 스케줄러가 어떤 형식을 받는지 꼭 확인하세요.

Cron 스케줄을 만들면서 배우게 되는 것

  • 표준 cron 표현식은 5개 필드로 구성됩니다: 분, 시, 일, 월, 요일.
  • *는 해당 필드의 "모든 값"이라는 뜻 — 의도보다 자주 실행되는 가장 흔한 원인입니다.
  • */N은 "N 단위마다"를 뜻합니다. 분 필드의 */5는 "5분마다"라는 의미죠.

Cron 표현식 한 단계씩 작성하기

  1. 프리셋에서 시작하기

    원하는 스케줄과 비슷한 프리셋을 고르세요 — 매분, 매시간, 매일 오전 9시, 평일 오전 9시, 매월. 표현식이 에디터에 바로 채워집니다.

  2. 필드별로 다듬기

    분, 시, 일, 월, 요일을 직접 수정하세요. 모든 값에는 *, 콤마 리스트, 범위(9-17), 간격(*/15)을 쓸 수 있습니다.

  3. 한국어 설명 확인하기

    도구가 표현식을 문장으로 풀어줍니다(평일 09:00). 이 문장이 의도와 다르다면 표현식이 잘못된 것입니다.

  4. 다음 실행 시각 미리보기

    로컬 시간대로 다음 5~10번의 실행 시각을 확인하세요. 스케줄이 서머타임 전환 시점 근처라면 특히 주의해야 합니다.

  5. 스케줄러에 붙여넣기

    완성된 표현식을 crontab, GitHub Actions 워크플로우, Kubernetes CronJob 등 사용 중인 스케줄러에 붙여넣으면 끝입니다.

Cron 필드 빠른 참조

표준 cron 표현식의 다섯 필드를 순서대로 정리했습니다. 참고: POSIX crontab(5) man 페이지.

위치필드범위특수문자
1분(Minute)0–59* , - /
2시(Hour)0–23* , - /
3일(Day of month)1–31* , - / ? (일부 방언)
4월(Month)1–12 또는 JANDEC* , - /
5요일(Day of week)0–6 (일=0) 또는 SUNSAT* , - /

직접 써볼 수 있는 cron 표현식 예시

5분마다

표현식

*/5 * * * *

해석

5분마다 실행 — 매시 정각부터 5분 간격으로.

간격 표기(*/5)는 숫자를 일일이 나열하지 않고도 "N마다"를 표현하는 가장 간단한 방법입니다. 헬스 체크나 폴링 잡에 자주 씁니다.

평일 오전 9시

표현식

0 9 * * 1-5

해석

월요일부터 금요일까지, 매일 09:00에 실행.

요일 범위 1-5는 월~금을 뜻합니다. 업무 시간 알림이나 평일에만 보내는 다이제스트에 잘 어울립니다.

매월 1일 자정

표현식

0 0 1 * *

해석

매월 1일 00:00에 실행.

일(day-of-month)을 1로 두고 나머지 필드는 *로 두면 정확한 월간 잡이 됩니다. 정산, 리포트, 로테이션 작업에 흔히 씁니다.

평일 업무 시간, 30분마다

표현식

0,30 9-17 * * 1-5

해석

월~금, 09:00부터 17:00 사이의 매시 0분과 30분에 실행.

콤마 리스트(0,30) + 범위(9-17) + 평일 조합입니다. 업무 시간에만 의미 있는 BI 새로고침이나 큐 비우기 작업에 딱 맞는 형태죠.

자주 하는 cron 실수

  • 타임존을 잊는다. 대부분의 cron 데몬은 *서버* 타임존을 따르지, 여러분의 타임존이 아닙니다. 플랫폼이 지원한다면 타임존을 명시적으로 설정하세요.
  • 일(day-of-month)과 요일(day-of-week)을 동시에 지정한다. 클래식 Unix cron에서는 두 조건 중 *하나만 맞아도* 실행됩니다 — 처음 겪으면 거의 다 놀랍니다.
  • */45를 쓰고 45분마다 실행될 거라 기대한다. 간격 값은 0부터 계산되기 때문에 */45는 0분과 45분에만 실행됩니다 — 진짜 45분 간격이 아닙니다.

Cron 표현식 자주 묻는 질문

cron 표현식은 어떻게 작성하나요?
표준 cron 표현식은 공백으로 구분된 다섯 개 필드입니다: 분, 시, 일, 월, 요일. *모든 값*에는 *, 정확한 값에는 숫자, 리스트는 콤마(1,15), 범위는 9-17, 간격은 */5 형식으로 씁니다.
*/5 * * * *는 무슨 뜻인가요?
"5분마다"라는 뜻입니다. 분 필드의 */5는 0분부터 5분 간격으로 — 0, 5, 10, 15, …, 55에 실행되고, 나머지 필드의 *는 매시간, 매일, 매월, 매 요일 실행된다는 의미입니다.
cron은 어떤 타임존을 사용하나요?
기본적으로 cron은 실행되는 시스템의 타임존을 따릅니다. 대부분의 클라우드 스케줄러는 타임존을 명시적으로 지정할 수 있게 해줍니다(TZ=Europe/Berlin, AWS schedule expressions 등). 헷갈릴 땐 UTC로 저장하는 게 안전합니다.
cron 표현식으로 1초마다 실행할 수 있나요?
표준 5필드 cron은 분이 최소 단위라서 가장 짧은 주기는 1분입니다. Quartz cron, Spring cron, 그리고 일부 Kubernetes 버전은 분 미만 스케줄을 위해 *초* 필드를 추가한 6필드 형식을 지원합니다.
0 0 * * 00 0 * * 7의 차이는 뭔가요?
둘 다 일요일 자정을 의미합니다. 대부분의 cron 구현에서 요일은 0~6(일~토)이지만, 호환성을 위해 7도 일요일로 받아들이는 방언이 많습니다.

다른 개발자 도구

Coddy로 코딩 배우기

시작하기