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 식 파서 사용 방법

  1. Cron 식을 입력합니다 ‘분 시 일 월 요일’의 다섯을 공백으로 나누어 넣습니다. 필드 수나 범위가 맞지 않으면 오류가 납니다.
  2. ‘해석하기’를 누릅니다 일정의 뜻이 문장으로 표시됩니다. 식을 잘못 읽고 계시지 않은지를 우선 여기서 확인해 주세요.
  3. 필드의 내역을 확인합니다 분·시·일·월·요일이 저마다 무엇을 가리키는지가 늘어섭니다. 뜻하지 않은 필드에 값이 들어 있지 않은지 찾아내실 수 있습니다.
  4. 다음 실행 예정을 봅니다 현재 시각 이후의 5건이 일시로 나옵니다. ‘매월 31일’처럼 달에 따라 존재하지 않는 날짜를 지정하신 경우 등, 뜻과의 어긋남이 구체적인 날짜로 드러납니다.
  5. 흔한 패턴을 옮겨 씁니다 매분·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 사양에서는 일요일을 0으로 표기하지만, 일부 구현(Vixie cron 등)에서는 7도 일요일의 또 다른 표기로 취급합니다. 이 도구는 두 표기 모두 일요일로 해석합니다.

우선순위가 아니라 "OR" 조건으로 처리됩니다. 일 필드와 요일 필드가 모두 "*" 이외로 제한된 경우, 둘 중 하나의 조건만 충족해도 실행됩니다. 한쪽이 "*"로 남아 있다면 제한된 쪽의 조건만 적용됩니다.

기본적인 5필드 형식(분 시 일 월 요일)은 동일합니다. 다만 GitHub Actions의 스케줄은 항상 협정 세계시(UTC) 기준으로 평가되며, 실제 실행이 수 분에서 수십 분 정도 지연될 수 있다는 점이 서버의 crontab과 다릅니다.

네, 분·시·일·월·요일 어느 필드에서도 스텝 지정(시작값/간격 또는 */간격)을 사용할 수 있습니다. 다만 요일이나 월처럼 값의 범위가 작은 필드에서는 실용적으로 조합할 수 있는 경우가 제한적입니다.
툴군

여담 ― cron의 반세기

cron이라는 이름은 그리스어로 "시간"을 뜻하는 크로노스(Chronos)에서 유래했다고 알려져 있으며, 1970년대 UNIX 초창기부터 존재해 온 대표적인 작업 스케줄러입니다. 단 5개의 필드만으로 "매분"부터 "매년 특정 일시"까지 표현할 수 있는 간결한 문법은 반세기 가까이 지난 지금도 널리 쓰이고 있습니다.

최근에는 리눅스 서버의 crontab뿐 아니라 GitHub Actions, GitLab CI, 쿠버네티스의 CronJob 등 수많은 CI/CD 도구와 컨테이너 플랫폼이 이 5필드 형식의 cron 문법을 그대로 스케줄 설정에 채택하고 있습니다. UNIX 시대에 설계된 문법이 클라우드 네이티브 환경에서도 그대로 쓰이고 있다는 점은 흥미로운 사실입니다.

cron 문법에서 헷갈리기 쉬운 부분 중 하나는 일(날짜)과 요일을 동시에 지정했을 때의 동작입니다. 직관적으로는 "AND"(둘 다 만족해야 함)를 기대하기 쉽지만, 실제 사양은 "OR"(둘 중 하나만 만족하면 됨)이어서 의도와 다른 빈도로 실행되는 문제의 원인이 되기 쉽습니다.