Cron 표현식 생성기 — Cron 일정 만들기와 해석

드롭다운으로 cron 일정을 만들거나 붙여 넣어 쉬운 말로 읽고, 다음 실행 10회를 내 시간대와 UTC로 확인하세요. 무료, 브라우저에서 실행.

분 · 시 · 일 · 월 · 요일. 이름(JAN, MON), @daily 같은 매크로, 붙여 넣은 crontab 한 줄 전체도 사용할 수 있습니다.

“월요일부터 금요일까지 매일 09:00 실행.”
분
시
일
월
요일

범위나 간격(1-5)을 사용합니다. 표현식 입력란에서 편집하거나, 아래에서 값을 골라 바꾸세요.

다음 실행 10회
일정 실행 시간대:
…

Cron은 실행되는 컴퓨터의 시간대로 일정을 해석합니다. GitHub Actions, Vercel, 대부분의 CI 러너와 클라우드 스케줄러에서는 “UTC”를 선택하세요. 두 열은 같은 시점을 보여 줍니다.

crontab -l의 출력을 붙여 넣으세요. 주석과 VAR=value 줄은 건너뜁니다.

5분마다 실행.
/usr/local/bin/healthcheck.sh
02:30 실행.
/usr/local/bin/backup.sh --full
월요일부터 금요일까지 매일 09:00 실행.
php /var/www/artisan reports:send
매주 일요일 00:00 실행.
certbot renew --quiet
자주 쓰는 cron 예시 (클릭해서 불러오기)
10분마다 API나 큐 폴링
6시간마다 (00:00, 06:00, 12:00, 18:00)
매일 밤 02:30 백업
평일 업무 시간 중 매시간
업무 시간 중 30분마다
매주 일요일 자정 (@weekly와 동일)
한 달에 두 번: 1일과 15일 08:00
월말 며칠 (스크립트에서 내일이 1일인지 확인)
토요일 03:00 점검 시간
분기마다, 1·4·7·10월 1일 04:15
금요일 또는 13일 (OR 규칙 예시)
매크로: 매일 자정에 한 번

모든 작업이 브라우저에서 실행됩니다. 입력한 내용은 전송되거나 저장되지 않습니다. 모든 무료 도구 보기.

문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.

이 무료 cron 표현식 생성기는 드롭다운으로 5개 필드 cron 일정을 만들고, 어떤 표현식이든 쉬운 말로 풀어 주며, 다음 실행 10회를 내 시간대와 UTC로 보여 줍니다. 표현식, crontab 한 줄, 또는 crontab 전체를 붙여 넣으면 모든 일정을 해석합니다. crontab, GitHub Actions, Kubernetes CronJob, Vercel cron 등 대부분의 스케줄러가 공유하는 표준 문법인 별표, 목록, 범위, 간격, 월·요일 이름, @daily 같은 매크로를 이해합니다.

Cron 문법은 간결한 만큼 실수를 봐주지 않습니다. “0 0 1 * *”와 “0 0 * * 1”은 비슷해 보이지만 각각 매월 1일과 매주 월요일을 뜻합니다. 일정을 말로, 그리고 구체적인 날짜로 확인하면 평일 9:00에 실행되는 작업과 일요일 UTC 09:00에 실행되는 작업을 혼동하지 않을 수 있습니다. 이 페이지는 바로 그런 실수를 막기 위해 존재합니다. 계산기는 Vixie cron을 그대로 따르며, 일 필드가 별표로 시작하면 두 일 필드의 결합 방식이 바뀌는 특이한 동작까지 반영합니다. Quartz 문법(초 필드, L, W, #)은 받지 않으며, 붙여 넣으면 그렇다고 알려 줍니다.

사용 방법

  1. 프리셋이나 예시에서 시작하거나, 표현식을 입력하거나 붙여 넣으세요(crontab 줄 전체를 넣으면 일정 부분만 남깁니다). 편집하는 동안 설명과 다음 실행 시간이 바로 업데이트됩니다.
  2. 5개 필드 편집기로 분, 시, 일, 월, 요일을 설정하세요. 매번, N마다, 특정 값 중에서 고를 수 있습니다.
  3. 다음 실행 10회를 확인하세요. 작업이 서버나 CI 러너에서 실행된다면 거의 항상 UTC를 쓰므로 “UTC”를 고르세요. 각 실행 시간은 내 시간대와 UTC로 함께 표시됩니다.
  4. 기존 서버를 점검하려면 crontab -l의 출력을 “crontab 전체 설명”에 붙여 넣으세요.
  5. 표현식을 복사하거나, 설명을 주석으로 단 완전한 crontab 줄을 복사하세요.
  6. crontab -e, GitHub Actions의 schedule: 블록, Kubernetes CronJob 스펙, 또는 사용하는 플랫폼의 cron 설정에 붙여 넣으세요.

자주 묻는 질문

5개 필드는 각각 무슨 뜻인가요?

순서대로 분(0–59), 시(0–23), 일(1–31), 월(1–12 또는 JAN–DEC), 요일(0–7 또는 SUN–SAT, 0과 7 모두 일요일)입니다. 별표는 모든 값, 1-5는 범위, 1,15는 목록, */10은 10번째 값마다를 뜻합니다.

일과 요일을 모두 설정하면 어떻게 되나요?

표준(Vixie) cron은 둘 다가 아니라 둘 중 하나라도 맞으면 작업을 실행합니다. “0 0 13 * FRI”는 13일의 금요일에만이 아니라 매월 13일과 매주 금요일에 실행됩니다. 이 페이지는 이 규칙을 따릅니다. 미묘한 점이 하나 있습니다. 두 일 필드 중 하나가 별표로 시작하면(예: */2) Vixie cron은 그 필드를 제한 없음으로 보고 둘 다 맞아야 실행하므로, “0 0 */2 * 1”은 홀수 날짜이면서 월요일인 날을 뜻합니다. Quartz는 다르게 동작하며 사용하지 않는 필드를 ?로 표시합니다.

cron은 어느 시간대를 사용하나요?

cron을 실행하는 컴퓨터나 서비스의 시간대입니다. 개인 서버는 보통 현지 시간을 쓰고, 클라우드 러너, GitHub Actions, Vercel, 대부분의 Kubernetes 클러스터는 UTC를 씁니다. UTC 러너에서 9:00로 설정한 작업은 토론토 기준 여름에는 5:00, 겨울에는 4:00에 실행됩니다. 실행 표에는 모든 시간이 내 시간대와 UTC로 함께 표시되므로 차이를 바로 알 수 있습니다.

초 필드나 L, W, # 확장을 지원하나요?

아니요. 6개 필드(초 포함) 문법과 L(마지막), W(평일), #(N번째 요일) 확장은 표준 cron이 아니라 Quartz와 일부 엔터프라이즈 스케줄러의 기능이며, 대부분의 플랫폼은 이를 거부합니다. “매월 마지막 금요일”이 필요하다면 매주 금요일에 실행하면서 날짜를 직접 확인하는 작업이 이식성 있는 방법입니다.

작업이 전혀 실행되지 않는 이유는 무엇인가요?

흔한 원인은 다음과 같습니다. 일정은 유효하지만 존재할 수 없는 날짜인 경우(4월 31일, 2월 30일), 서버의 시간대가 예상과 다른 경우, crontab 줄에 명령이 없거나 명령의 PATH가 내 셸과 다른 경우, 또는 간격이 작업 자체의 실행 시간보다 짧아 인스턴스가 쌓이는 경우입니다. 여기의 다음 실행 목록으로 앞의 두 가지를 잡아낼 수 있습니다.

Cron 문법 정리

• * 모든 값 · 5 정확히 5 · 1-5 범위 · 1,3,5 목록 · */15 15번째 값마다 · 1-30/5 1부터 30까지 5번째 값마다

• 이름: 월은 JAN–DEC, 요일은 SUN–SAT(대소문자 구분 없음). 이름 범위도 사용할 수 있습니다(MON-FRI).

• @hourly (0 * * * *), @daily 또는 @midnight (0 0 * * *), @weekly (0 0 * * 0), @monthly (0 0 1 * *), @yearly 또는 @annually (0 0 1 1 *). @reboot는 부팅 시 한 번 실행됩니다. crontab은 이를 받지만 모든 플랫폼이 그런 것은 아니며, 이식성 있는 것은 5개 필드 형식입니다.

• 요일 0과 7은 모두 일요일입니다. 범위는 순환하지 않으므로 FRI-MON은 오류입니다. FRI-SAT,SUN-MON 또는 5,6,0,1로 쓰세요.

• 필드는 공백으로 구분하며, crontab에서는 같은 줄에 명령이 이어집니다.

Cron 일정을 넣는 곳

Linux와 macOS: crontab -e, 한 줄에 작업 하나, 표현식 다음에 명령. GitHub Actions: on: schedule: - cron: '0 9 * * 1-5', 항상 UTC이며 바쁜 시간에는 실행이 몇 분 지연될 수 있습니다. Kubernetes: CronJob의 schedule 필드. Vercel: vercel.json의 crons에 path와 schedule 지정, UTC. 클라우드 스케줄러(AWS EventBridge, Google Cloud Scheduler)도 약간의 방언 차이가 있을 뿐 같은 문법을 받으며, EventBridge는 연도 필드를 추가합니다.

다음 실행 시간 계산 방식

계산기는 현재부터 하루씩 앞으로 나아갑니다. 날마다 월을 확인하고, 이어서 일과 요일 필드를 Vixie 규칙(둘 다 제한되면 OR, 하나라도 *로 시작하면 AND)으로 확인한 다음, 그제야 일치하는 시와 분을 나열합니다. 현재 분보다 엄밀히 뒤가 아닌 실행은 건너뛰므로, 바로 이번 분에 예정된 작업은 그다음 실행 시간으로 표시됩니다.

내 시간대에서는 일광 절약 시간이 영향을 줍니다. 시계가 앞당겨지는 날에 존재하지 않는 시간(북미 대부분에서 02:30)은 건너뛰고, 시계가 되돌아가 두 번 나타나는 시간은 한 번만 실행합니다. 이것이 cronie가 고정 시간 작업을 처리하는 방식이며, 다른 데몬은 다를 수 있습니다. 서버가 보통 cron을 UTC로 실행하는 또 하나의 이유입니다.

존재할 수 없는 날짜(2월 30일, 4월 31일)를 지정한 일정은 절대 실행되지 않으며, 페이지에서 그렇게 알려 줍니다. 2월 29일 일정은 윤년에만 실행되며, 검색은 9년 앞까지 살펴보므로 실제 일정이라면 충분합니다.

관련 무료 도구

  • 정규식 테스터 — 실시간 매치 강조, 캡처 그룹, 치환 미리보기로 정규 표현식을 샘플 텍스트에 테스트하세요. 무료, 브라우저에서 실행.
  • JSON 포매터 — JSON을 보기 좋게 정렬하고, 압축하고, 검증하세요. 파싱 오류는 줄과 열 위치까지 알려 줍니다. 브라우저에서 실행, 업로드 없음.
  • 단위 변환기 — 미터법과 야드파운드법, 요리, 데이터, 압력, 에너지, 속도, 연비까지 모든 주요 단위를 브라우저에서 즉시 변환하세요.