Cron
cron 표현식 파서
cron 일정을 쉬운 말로 읽고 다음 실행 시각을 확인하세요.
다섯 개 필드: 분, 시, 일, 월, 요일. 맨 앞에 필드를 하나 더 두면 초로 읽습니다.
cron 표현식에 대하여
cron 표현식은 작업을 언제 실행할지 나타내는 다섯 개의 필드(분, 시, 일, 월, 요일)로 이루어집니다. 각 필드에는 숫자, 목록, 범위, 또는 */15 같은 간격을 쓸 수 있습니다. 간결하지만 잘못 읽기 쉬우며, 특히 두 개의 날짜 관련 필드가 결합되는 방식은 대부분이 잘못 짐작합니다. 그래서 일정을 문장과 날짜로 확인하는 편이 머릿속으로 따지는 것보다 대개 빠릅니다.
다섯 개의 숫자 필드 외에도, 이 도구를 뒷받침하는 파서를 포함한 대부분의 cron 구현은 숫자 대신 월과 요일의 세 글자 이름(JAN, MON)이나, 동등한 숫자 표현으로 확장되는 @daily, @hourly, @weekly 같은 몇 가지 축약형도 받아들입니다. 이들은 순전히 가독성을 위한 것으로, @daily와 "0 0 * * *"는 동일하게 스케줄됩니다. 다만 모든 cron 구현이 모든 축약형을 지원하는 것은 아니므로, 프로덕션에서 의존하기 전에 실제 사용하는 스케줄러의 문서를 확인해 보는 것이 좋습니다.
사용되는 곳
- crontab 항목을 서버에 반영하기 전에 확인하기
- 쿠버네티스 CronJob이나 CI 파이프라인의 일정 읽기
- 야간 작업이 예상 밖의 시각에 실행된 이유 찾기
- 새 백업이나 정리 작업 일정을 처음부터 작성하기
자주 묻는 질문
일과 요일을 모두 지정하면 어떻게 되나요?
AND가 아니라 OR로 결합되어 둘 중 하나만 맞아도 실행됩니다. 따라서 "0 0 13 * 5"는 매달 13일과 매주 금요일에 실행되며, 13일의 금요일에만 실행되는 것이 아닙니다. cron에서 가장 흔한 실수입니다.
실행 시각은 어느 시간대인가요?
UTC입니다. 실제 스케줄러는 장비나 작업 정의의 시간대를 사용하므로, 서버가 현지 시간으로 동작한다면 실제 실행 시각은 달라집니다. 여기 표시된 시각에 의존하기 전에 스케줄러 설정을 확인하세요.
다섯 필드와 여섯 필드 표현식을 모두 지원하나요?
네. 다섯 필드는 분부터 시작하는 표준 유닉스 cron입니다. 맨 앞에 필드를 하나 더 두면 초를 뜻하며, Quartz와 Spring 등 여러 작업 라이브러리가 이 형식을 기대합니다.
숫자 대신 @daily나 MON을 쓸 수 있나요?
네. 월과 요일의 세 글자 이름(JAN, MON 등)과 @daily, @hourly, @weekly 같은 축약형 모두 여기서 받아들여지며 동등한 숫자 필드로 확장됩니다 — @daily는 "0 0 * * *"와 동일합니다. 이들은 널리 지원되지만 보편적이지는 않습니다. 일부 최소한의 또는 임베디드용 cron 구현은 순수한 다섯 필드 숫자 형식만 받아들이므로, 프로덕션에서 축약형에 의존하기 전에 실제 스케줄러의 문서를 확인할 가치가 있습니다.