Menu

Cron 표현식 생성기

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

작성자 Nethanel Bar, Co-founder & CEO

마지막 업데이트

Ready to actually learn to code?

Coddy teaches you by writing real code in your browser - interactive lessons, instant feedback, and AI help when you get stuck.

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 programming languages illustration

Coddy로 코딩 배우기

시작하기