Cron 표현식 파서 및 다음 실행 시간 계산기
cron 표현식(분 시 일 월 요일)을 분석하여 일정을 쉬운 말로 보여줍니다. 스텝·범위·목록 문법을 지원하며 다음 5회 실행 시간도 자동으로 계산하는 무료 도구입니다. crontab이나 GitHub Actions의 스케줄 설정을 확인할 때 유용합니다.
Cron 표현식 문법(5개 필드)
cron 표현식은 왼쪽부터 분, 시, 일(날짜), 월, 요일의 5개 필드를 공백으로 구분하여 지정합니다. 각 필드는 아래의 특수 문자를 사용할 수 있습니다.
| 위치 | 필드 | 지정 가능한 범위 |
|---|---|---|
| 1 | 분 | 0-59 |
| 2 | 시 | 0-23 |
| 3 | 일(날짜) | 1-31 |
| 4 | 월 | 1-12 |
| 5 | 요일 | 0-7 |
요일은 보통 0=일요일 ~ 6=토요일이지만, 일부 cron 구현에서 사용하는 7=일요일 표기도 이 도구는 허용합니다(내부적으로 0으로 처리됩니다).
각 필드에서는 "*"(모든 값), 쉼표로 구분한 목록(1,15,30), 하이픈으로 지정하는 범위(1-5), 슬래시로 지정하는 간격(*/15, 1-30/5)을 사용할 수 있으며 자유롭게 조합할 수 있습니다.
자주 쓰이는 cron 패턴
| cron 표현식 | 의미 |
|---|---|
| * * * * * | 매분 실행됩니다. |
| */5 * * * * | 5분마다 실행됩니다. |
| 0 * * * * | 매시 0분에(1시간에 한 번) 실행됩니다. |
| 0 0 * * * | 매일 0시 0분(자정)에 실행됩니다. |
| 0 9 * * 1-5 | 평일(월~금) 9시에 실행됩니다. |
| 0 0 1 * * | 매월 1일 0시 0분에 실행됩니다. |
| 0 0 1 1 * | 매년 1월 1일 0시 0분에 실행됩니다. |
| */15 9-17 * * 1-5 | 평일 9시부터 17시까지 15분마다 실행됩니다. |
Cron 식이란
Cron 식은 되풀이해 실행할 처리를 언제 움직일지를 한 줄로 적어 나타내는 표기법입니다. 왼쪽부터 ‘분·시·일(날짜)·월·요일’의 다섯 필드를 공백으로 나누어 늘어놓고, 저마다 *(모두), 쉼표로 늘어놓기, 하이픈에 의한 범위, 슬래시에 의한 간격을 짜 맞추어 지정합니다. */15 9-17 * * 1-5라면 ‘평일 9시부터 17시까지 15분마다’라는 뜻이 됩니다.
이 도구는 입력하신 식을 해석해, **일정의 뜻을 문장으로 보여 드린 뒤 현재 시각부터 세어 다음에 실행될 5건의 일시**를 계산합니다. 필드마다의 내역도 나란히 나오므로, 어느 부분이 듣고 있는지 확인하실 수 있습니다. 요일은 0=일요일〜6=토요일이 표준이지만, 일부 구현에서 쓰이는 7=일요일의 표기도 받아들여 안에서는 0으로 다룹니다. 다음 실행의 탐색 범위는 약 4년이며, 그 안에 맞는 일시가 없으면 그 뜻이 표시됩니다.
Cron 식 파서 사용 방법
- Cron 식을 입력합니다 ‘분 시 일 월 요일’의 다섯을 공백으로 나누어 넣습니다. 필드 수나 범위가 맞지 않으면 오류가 납니다.
- ‘해석하기’를 누릅니다 일정의 뜻이 문장으로 표시됩니다. 식을 잘못 읽고 계시지 않은지를 우선 여기서 확인해 주세요.
- 필드의 내역을 확인합니다 분·시·일·월·요일이 저마다 무엇을 가리키는지가 늘어섭니다. 뜻하지 않은 필드에 값이 들어 있지 않은지 찾아내실 수 있습니다.
- 다음 실행 예정을 봅니다 현재 시각 이후의 5건이 일시로 나옵니다. ‘매월 31일’처럼 달에 따라 존재하지 않는 날짜를 지정하신 경우 등, 뜻과의 어긋남이 구체적인 날짜로 드러납니다.
- 흔한 패턴을 옮겨 씁니다 매분·5분마다·매시 0분·평일 9시 같은 정석 패턴이 표에 정리되어 있습니다. 가까운 것을 바탕으로 고쳐 쓰는 편이 빠릅니다.
더 잘 활용하기 위한 팁
- "*/15 9-17 * * 1-5"처럼 쉼표 목록, 하이픈 범위, 슬래시 간격 지정을 자유롭게 조합할 수 있습니다.
- 요일 필드는 보통 0~6(일요일~토요일)이지만, 일부 cron 구현에서 사용하는 7(일요일의 별칭)도 이 도구는 허용합니다.
- 일(날짜)과 요일 필드를 모두 "*" 이외로 제한하면, cron 표준 사양상 둘 중 하나만 맞아도 실행되는 "OR" 조건이 됩니다.
- GitHub Actions의 schedule 트리거도 이 도구와 동일한 5필드 cron 문법을 사용하므로, 워크플로가 실행되는 정확한 시각을 확인하는 데도 활용할 수 있습니다.
- 서버의 시간대 설정에 따라 실제 실행 시각이 달라질 수 있으므로, crontab을 수정한 뒤에는 서버의 현재 시각도 함께 확인해 두면 안심할 수 있습니다.
Cron 식 파서의 활용 상황
crontab에 적기 전에 뜻을 확인하기
서버에 등록하시기 전에 해석해 두시면, 생각보다 많이 움직이거나 아예 움직이지 않는 사고를 막으실 수 있습니다.
GitHub Actions의 일정을 확인하기
워크플로의 schedule에 적는 식도 같은 다섯 필드의 표기법입니다. 다음 실행 목록으로 뜻하신 간격이 되었는지 보실 수 있습니다.
남이 쓴 식을 풀어 읽기
이어받은 설정에 0 */6 * * * 같은 식이 있을 때, 문장으로 고치면 몇 시에 움직이는지 바로 아실 수 있습니다.
실행이 어긋난 까닭을 살피기
‘움직여야 할 시각에 움직이지 않았다’ 하실 때, 다음 실행 목록을 보시면 식 자체가 까닭인지 다른 요인인지를 갈라내실 수 있습니다.
Cron 식에 관한 용어집
- cron
- 유닉스 계열 OS에서 정해진 시각에 처리를 되풀이해 실행하기 위한 얼개입니다. 실행할 내용과 시각의 대응을 적은 목록을 crontab이라 부릅니다.
- 필드
- Cron 식을 공백으로 나눈 각 요소입니다. 왼쪽부터 분(0〜59)·시(0〜23)·일(1〜31)·월(1〜12)·요일(0〜6)의 다섯입니다.
- 별표(*)
- 그 필드가 가질 수 있는 값 모두를 나타냅니다. 분에 두면 ‘매분’, 월에 두면 ‘매월’이라는 뜻이 됩니다.
- 스텝(/)
*/15처럼 적어 간격을 지정합니다. ‘15분마다’처럼 범위 안을 일정한 간격으로 건너뛰며 고릅니다.- 범위(-)
1-5처럼 이어진 값을 한꺼번에 지정합니다. 요일에 두면 월요일부터 금요일, 시에 두면 1시부터 5시라는 뜻이 됩니다.- 요일의 번호
- 0이 일요일, 6이 토요일입니다. 구현에 따라서는 7도 일요일로 받아들이는 것이 있으며, 이 도구도 7을 0과 같은 것으로 다룹니다.
- 시간대
- cron은 보통 움직이는 쪽 환경의 시각으로 해석됩니다. 서버의 시각 설정이 생각과 다르면, 같은 식이라도 실행 시각이 어긋나는 까닭이 됩니다.
자주 묻는 질문
여담 ― cron의 반세기
cron이라는 이름은 그리스어로 "시간"을 뜻하는 크로노스(Chronos)에서 유래했다고 알려져 있으며, 1970년대 UNIX 초창기부터 존재해 온 대표적인 작업 스케줄러입니다. 단 5개의 필드만으로 "매분"부터 "매년 특정 일시"까지 표현할 수 있는 간결한 문법은 반세기 가까이 지난 지금도 널리 쓰이고 있습니다.
최근에는 리눅스 서버의 crontab뿐 아니라 GitHub Actions, GitLab CI, 쿠버네티스의 CronJob 등 수많은 CI/CD 도구와 컨테이너 플랫폼이 이 5필드 형식의 cron 문법을 그대로 스케줄 설정에 채택하고 있습니다. UNIX 시대에 설계된 문법이 클라우드 네이티브 환경에서도 그대로 쓰이고 있다는 점은 흥미로운 사실입니다.
cron 문법에서 헷갈리기 쉬운 부분 중 하나는 일(날짜)과 요일을 동시에 지정했을 때의 동작입니다. 직관적으로는 "AND"(둘 다 만족해야 함)를 기대하기 쉽지만, 실제 사양은 "OR"(둘 중 하나만 만족하면 됨)이어서 의도와 다른 빈도로 실행되는 문제의 원인이 되기 쉽습니다.