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분마다 실행됩니다. |
팁
- "*/15 9-17 * * 1-5"처럼 쉼표 목록, 하이픈 범위, 슬래시 간격 지정을 자유롭게 조합할 수 있습니다.
- 요일 필드는 보통 0~6(일요일~토요일)이지만, 일부 cron 구현에서 사용하는 7(일요일의 별칭)도 이 도구는 허용합니다.
- 일(날짜)과 요일 필드를 모두 "*" 이외로 제한하면, cron 표준 사양상 둘 중 하나만 맞아도 실행되는 "OR" 조건이 됩니다.
- GitHub Actions의 schedule 트리거도 이 도구와 동일한 5필드 cron 문법을 사용하므로, 워크플로가 실행되는 정확한 시각을 확인하는 데도 활용할 수 있습니다.
- 서버의 시간대 설정에 따라 실제 실행 시각이 달라질 수 있으므로, crontab을 수정한 뒤에는 서버의 현재 시각도 함께 확인해 두면 안심할 수 있습니다.
자주 묻는 질문
여담 ― cron의 반세기
cron이라는 이름은 그리스어로 "시간"을 뜻하는 크로노스(Chronos)에서 유래했다고 알려져 있으며, 1970년대 UNIX 초창기부터 존재해 온 대표적인 작업 스케줄러입니다. 단 5개의 필드만으로 "매분"부터 "매년 특정 일시"까지 표현할 수 있는 간결한 문법은 반세기 가까이 지난 지금도 널리 쓰이고 있습니다.
최근에는 리눅스 서버의 crontab뿐 아니라 GitHub Actions, GitLab CI, 쿠버네티스의 CronJob 등 수많은 CI/CD 도구와 컨테이너 플랫폼이 이 5필드 형식의 cron 문법을 그대로 스케줄 설정에 채택하고 있습니다. UNIX 시대에 설계된 문법이 클라우드 네이티브 환경에서도 그대로 쓰이고 있다는 점은 흥미로운 사실입니다.
cron 문법에서 헷갈리기 쉬운 부분 중 하나는 일(날짜)과 요일을 동시에 지정했을 때의 동작입니다. 직관적으로는 "AND"(둘 다 만족해야 함)를 기대하기 쉽지만, 실제 사양은 "OR"(둘 중 하나만 만족하면 됨)이어서 의도와 다른 빈도로 실행되는 문제의 원인이 되기 쉽습니다.