다음 실행
스케줄러마다 일과 요일 규칙, 서머타임 처리 같은 세부 동작이 다릅니다. 운영 환경에 쓰기 전에 실제 시스템에서 일정을 꼭 테스트하세요.
*/15 * * * *는 0,15,30,45 * * * *와 같아서 한 시간에 4번, 하루 96번 실행됩니다. 업무 시간으로 제한하려면 */15 9-17 * * 1-5로 쓰세요. 평일 9시부터 17시 45분까지 하루 36번 실행됩니다.
사용법
- 크론 표현식을 입력하거나 붙여 넣거나 자주 쓰는 설정을 탭하세요. 형식은 필드 개수로 정해집니다. 5개는 Unix 크론탭, 6개는 Spring(초가 맨 앞), 7개이거나 ?가 있으면 Quartz입니다.
- 쉬운 설명과 다음 10번의 실행 시각을 확인하세요. 시간대를 고르면 그곳 기준 실행 시각이 나오고, 시각을 탭하면 ISO 8601 형식으로 복사됩니다.
- 편집기에서는 필드를 하나씩 바꿀 수 있습니다. 매번, 간격, 특정 값, 범위 중에서 고르세요.
- Unix, Quartz, Spring 사이를 전환하면 가능한 경우 표현식을 변환합니다.
- Unix 크론에서 일과 요일을 모두 지정하면 둘 중 하나만 맞아도 실행됩니다(OR). Quartz는 둘 중 하나에 ?가 필요하고, Spring은 둘 다 맞아야 실행됩니다.
- Unix 요일은 0–7(0과 7은 일요일)이고, Quartz는 1–7에 1이 일요일입니다. MON-FRI 같은 이름은 어디서나 쓸 수 있습니다.
- Quartz와 Spring은 L(말일), W(가장 가까운 평일), 5L(마지막 금요일), 2#1(첫째 월요일)도 지원합니다.
- 서머타임 전환으로 건너뛰는 시각은 생략됩니다. 크론 데몬마다 처리 방식이 다릅니다.
유닉스 크론의 다섯 필드
일반 crontab 한 줄은 분(0–59), 시(0–23), 일(1–31), 월(1–12 또는 JAN–DEC), 요일(0–7, 0과 7은 일요일, 또는 SUN–SAT) 다섯 필드로 이루어집니다. *는 모든 값, 쉼표는 나열(1,15), 하이픈은 범위(9-17), 슬래시는 간격(*/15는 0, 15, 30, 45분)을 뜻합니다.
예를 들어 30 2 * * 1-5는 월~금 새벽 2시 30분, 0 */6 * * *는 0시, 6시, 12시, 18시에 실행됩니다. @hourly, @daily, @weekly, @monthly는 각각 0 * * * *, 0 0 * * *, 0 0 * * 0, 0 0 1 * *와 같습니다.
Quartz와 Spring의 차이
Quartz는 맨 앞에 초, 맨 뒤에 선택 사항인 연도 필드가 있고, 요일을 일요일부터 1~7로 세며, 일과 요일 중 한쪽에 ?를 꼭 써야 합니다. 스프링 @Scheduled는 초부터 시작하는 6개 필드에 요일 0~7을 씁니다. 둘 다 L(말일), W(가장 가까운 평일), 6L(마지막 금요일), 2#1(첫째 월요일)을 지원합니다.
자주 하는 실수
유닉스 크론에서 일과 요일을 둘 다 지정하면 둘 중 하나만 맞아도 실행됩니다. 0 0 13 * 5는 13일의 금요일만이 아니라 매달 13일과 매주 금요일에 실행됩니다. 크론 데몬은 따로 지정하지 않으면 서버 시간대를 쓰고, GitHub Actions는 항상 UTC 기준입니다. 서머타임이 있는 지역에서는 전환일에 2시 30분 작업이 건너뛰거나 두 번 실행될 수 있으니 중요한 작업은 UTC로 잡으세요.
자주 묻는 질문
* * * * *는 무슨 뜻인가요?
매일 매시 매분 실행한다는 뜻으로, 하루 1,440번 실행됩니다. 각 *는 해당 필드의 모든 값을 뜻하며 순서는 분, 시, 일, 월, 요일입니다.
크론탭에서 5분마다 실행하려면 어떻게 쓰나요?
*/5 * * * *를 쓰면 됩니다. 0분, 5분, 10분 … 55분에 실행되어 하루 288번입니다. 시작 분을 바꾸려면 2-59/5 * * * *처럼 쓰세요.
크론은 어느 시간대를 쓰나요?
기본 크론은 서버의 현지 시간대를 씁니다. CRON_TZ나 timeZone 설정을 지원하는 시스템도 있고, 쿠버네티스 CronJob에는 timeZone 필드가 있으며, GitHub Actions는 항상 UTC입니다. 여기서 시간대를 고르면 해당 지역 기준 실행 시각을 볼 수 있습니다.
유닉스 크론과 Quartz 크론은 무엇이 다른가요?
유닉스 크론은 분부터 시작하는 5개 필드입니다. Quartz는 초부터 시작하는 6~7개 필드로 끝에 연도를 쓸 수 있고, 일요일을 1로 세며, 두 날짜 필드 중 하나에 ?가 필요합니다.
매달 마지막 날에 실행하려면 어떻게 하나요?
Quartz와 스프링은 일 필드에 L을 쓸 수 있어 Quartz에서는 0 0 0 L * ?입니다. 표준 유닉스 크론에는 L이 없어서, 보통 28~31일에 실행하고 스크립트에서 내일이 1일인지 확인합니다.
크론 작업이 예상한 시간에 실행되지 않은 이유는 무엇인가요?
서버 시간대, 일과 요일을 실수로 함께 지정하지 않았는지, 그리고 PATH와 환경 변수가 셸과 다른 크론의 최소 환경에서도 명령이 동작하는지 확인하세요.