Cron 표현식 빌더
드롭다운과 숫자 입력으로 분·시·일·월·요일을 선택하기만 하면 cron 표현식을 만들 수 있는 도구입니다. 생성된 cron 문자열, 쉬운 말로 된 설명, 다음 5회 실행 시간을 그 자리에서 미리 볼 수 있어 crontab이나 GitHub Actions 스케줄 작성에 유용합니다.
자주 쓰는 일정 빠른 참조표
대표적인 일정에 해당하는 cron 표현식 목록입니다. 행을 클릭하면 위쪽 빌더에 프리셋으로 바로 반영됩니다.
| 프리셋 이름 | cron 표현식 | 의미 |
|---|---|---|
| 매일 자정 0시 | 0 0 * * * | 매일 0시 0분(자정)에 실행됩니다. |
| 평일 9시 | 0 9 * * 1-5 | 평일(월~금) 9시에 실행됩니다. |
| 매시 0분 | 0 * * * * | 매시 0분에(1시간에 한 번) 실행됩니다. |
| 매주 월요일 | 0 0 * * 1 | 매주 월요일 0시 0분에 실행됩니다. |
cron 식이란
cron 식은 UNIX 계열 운영체제의 작업 스케줄러에게 「언제 실행할지」를 알려 주는 다섯 개의 숫자 필드입니다. 왼쪽부터 분·시·일(날짜)·월·요일의 순서로 공백을 사이에 두고 늘어놓아 `30 3 * * 1`처럼 씁니다. 이 예는 「매주 월요일 새벽 3시 30분」이라는 뜻입니다. 표기가 짧다는 것은 장점이지만 동시에 약점이기도 합니다. 잘못 쓴 필드도 문법상으로는 통과하는 경우가 많아, 작업이 조용히 엉뚱한 시각에 돌고 있었다는 사실을 한참 뒤에야 알아차리기 쉽습니다.
이 도구는 다섯 개의 필드를 각각 「매번」「값 지정」「목록」「범위」「간격」의 다섯 가지 모드 가운데 하나로 설정하게 하고, 만들어진 cron 식과 그것을 풀어 쓴 설명을 함께 보여 줍니다. 입력에서 식으로, 식에서 문장으로 가는 두 방향을 같은 화면에서 맞춰 볼 수 있으므로, 서버에 올리기 전에 쓴 대로의 뜻인지 확인할 수 있습니다. 모든 처리는 브라우저 안에서 끝나며 입력한 내용이 밖으로 전송되지 않습니다.
cron 식을 만드는 방법
- 프리셋에서 출발합니다 「매일 자정」「평일 9시」「매시 정각」「매주 월요일」의 네 가지 가운데 가까운 것을 고르면 각 필드가 그 설정으로 채워집니다. 처음부터 짜는 것보다 빠르고 실수도 줄어듭니다.
- 필드마다 모드를 고릅니다 분·시·일·월·요일 각각에서 매번(*), 값 지정, 목록, 범위, 간격(*/n) 가운데 하나를 고릅니다. 쓰지 않는 필드는 「매번」 그대로 두면 됩니다.
- 값을 입력합니다 목록은 쉼표로 구분하고, 범위는 시작과 끝을, 간격은 몇 개마다 실행할지를 넣습니다. 분은 0〜59, 시는 0〜23, 일은 1〜31, 월은 1〜12, 요일은 0〜6(0이 일요일)입니다.
- 만들어진 식과 설명을 맞춰 봅니다 화면의 cron 식과 그 아래의 설명을 나란히 읽습니다. 설명이 의도와 어긋나면 해당 필드의 설정을 고칩니다.
- crontab에 붙여 넣습니다 확인이 끝나면 식을 복사해 `crontab -e`로 연 표의 줄 맨 앞에 두고, 그 뒤에 실행할 명령을 씁니다.
더 잘 활용하기 위한 팁
- 요일 필드를 "범위" 모드로 1부터 5까지 설정하면 월요일부터 금요일까지를 한 번에 지정할 수 있습니다.
- "목록" 모드는 쉼표로 구분해 여러 값을 지정하는 모드로, 예를 들어 분 필드에 "0,15,30,45"를 입력하면 15분마다 실행하는 것과 같은 의미가 됩니다.
- 일(날짜)과 요일 필드를 모두 "매번(*)" 이외로 설정하면, cron 사양상 둘 중 하나만 맞아도 실행되는 "OR" 조건이 됩니다.
- 생성된 cron 표현식은 "복사" 버튼으로 클립보드에 복사할 수 있어 crontab이나 GitHub Actions YAML에 바로 붙여넣을 수 있습니다.
- 프리셋 버튼이나 아래 빠른 참조표의 행을 클릭하면 대표적인 일정을 한 번에 빌더에 반영할 수 있습니다.
이런 때에 쓸 수 있습니다
백업과 배치 처리의 시각을 정할 때
데이터베이스 덤프나 로그 집계는 접속이 적은 심야로 몰아 두는 것이 보통입니다. 문법을 먼저 떠올리지 않고도 「매일 새벽 3시 5분」 같은 식을 만들 수 있습니다.
영업일에만 돌리고 싶을 때
요일 필드를 1〜5 범위로 두면 평일에만 돌아갑니다. cron은 공휴일을 알지 못하므로, 공휴일을 빼고 싶다면 스크립트 안에서 판정을 넣어 주세요.
남이 쓴 cron 식을 읽어 낼 때
넘겨받은 서버의 crontab에 `*/15 2-5 * * *` 같은 식이 있을 때, 같은 설정을 여기서 재현해 설명을 읽으면 뜻을 잘못 짚지 않습니다.
CI나 컨테이너의 스케줄 설정에 쓸 때
GitHub Actions의 `schedule`과 Kubernetes의 CronJob도 같은 다섯 필드 표기를 씁니다. 다만 이들은 보통 UTC로 돌기 때문에 시 필드를 시차만큼 옮겨 주어야 합니다.
cron 용어
- cron
- UNIX 계열 운영체제에서 정해진 시각에 명령을 자동으로 실행해 주는 상주 프로그램입니다. 설정은 사용자별 crontab이라는 표에 적습니다.
- crontab
- 스케줄 표 그 자체와, 그것을 편집하는 명령(`crontab -e`)을 함께 가리킵니다. 한 줄이 「cron 식+실행할 명령」의 짝이 됩니다.
- 별표(*)
- 그 필드의 「모든 값」을 뜻합니다. 분 필드가 *이면 매분, 월 필드가 *이면 매달입니다.
- 간격(*/n)
- n개마다 실행하는 표기입니다. 분 필드의 `*/15`는 0분·15분·30분·45분을 뜻합니다. 기준점은 언제나 그 필드의 최솟값이며, 「직전 실행으로부터 n분 뒤」라는 뜻이 아닙니다.
- 목록과 범위
- 목록은 쉼표로 값을 늘어놓는 표기(`1,15`)이고, 범위는 붙임표로 잇는 표기(`9-17`)입니다. 둘은 `1-5,10`처럼 섞어서 쓸 수도 있습니다.
- 일과 요일의 동시 지정
- 대부분의 cron 구현에서는 일 필드와 요일 필드를 모두 * 이외로 두면 **둘 중 어느 한쪽에 맞는 날**에 실행됩니다(둘 다가 아닙니다). 그래서 `0 0 1 * 1`은 「매달 1일, 그리고 매주 월요일」이라는 뜻이 되며, 뜻하지 않은 실행을 부르기 쉬운 조합입니다.
자주 묻는 질문
여담 ― cron 표현식은 왜 "읽기"보다 "만들기"가 어려울까
cron 표현식은 5개 필드만 알면 쉽게 쓸 수 있을 것 같지만, 막상 직접 작성하려면 "*/15"와 "1-30/5" 중 어느 쪽이 맞는지, 요일이 0부터 시작하는지 1부터 시작하는지 같은 세세한 사양을 떠올려야 해서 의외로 손이 많이 갑니다. 반대로 이미 작성된 cron 표현식을 읽고 의미를 파악하는 작업(본 사이트의 Cron 표현식 파서가 담당하는 역할)은 필드를 순서대로 따라가기만 하면 비교적 기계적으로 할 수 있습니다.
이 도구는 이러한 비대칭성에 주목해, UI 선택을 통해 cron 표현식을 "만드는" 작업을 지원합니다. 드롭다운과 숫자 입력으로 "평일 9시에 실행하고 싶다"와 같은 의도를 직접 표현하면, 그 의도를 충족하는 cron 표현식을 자동으로 조합해 주어 문법을 암기해야 하는 부담 자체를 없앱니다.
생성한 cron 표현식이 의도한 대로 동작하는지 확인하는 마지막 단계로, 다음 실행 예정 일시를 5건 미리 볼 수 있는 기능을 갖추고 있습니다. 특히 일(날짜)과 요일을 동시에 제한하면 "OR" 조건이 되는 헷갈리기 쉬운 사양이 있기 때문에, 실제 후보 일시를 눈으로 직접 확인할 수 있다는 점은 의도와 다른 빈도로 실행되는 문제를 미리 방지하는 데 도움이 됩니다.