Cron 표현식 구문: 예제와 함께하는 완벽 가이드
Cron 표현식 구문
cron은 Unix 계열 시스템의 표준 작업 스케줄러입니다. 모든 cron 표현식은 명령어를 실행할 시기를 지정하는 간결한 문자열로 일정을 정의합니다. 백업, 로그 순환, 유지보수 작업을 자동화하려면 구문을 이해하는 것이 필수적입니다.
5개 필드 형식
표준 cron 표현식은 공백으로 구분된 5개의 필드로 구성됩니다:
* * * * *
| | | | |
| | | | +----- 요일 (0-7, 0과 7 = 일요일)
| | | +------- 월 (1-12)
| | +--------- 일 (1-31)
| +----------- 시 (0-23)
+------------- 분 (0-59)
필드 상세 설명
| 필드 | 범위 | 특수 문자 | 예제 |
|-------|-------|-------------------|---------|
| 분 | 0-59 | , - * / | 30 = 30분에 |
| 시 | 0-23 | , - * / | 6 = 오전 6시에 |
| 일 | 1-31 | , - * / | 15 = 15일에 |
| 월 | 1-12 | , - * / | 6 = 6월에 |
| 요일 | 0-7 | , - * / | 0 = 일요일에 |
분 필드는 정확한 실행 분을 제어합니다: 30 * * * *은 매시간 30분에 실행됩니다. 시 필드는 하루 중 시간을 정의합니다: 0 6 * * *은 매일 오전 6:00에 실행됩니다. 일 필드는 특정 날짜로 제한합니다: 0 0 15 * *은 매월 15일 자정에 실행됩니다. 월 필드는 특정 월로 제한합니다: 0 0 1 6 *은 6월 1일에 실행됩니다. 요일 필드는 요일을 제어합니다: 0 8 * * 1-5는 월요일부터 금요일까지 오전 8시에 실행됩니다.
중요: 29-31일 값은 해당 날짜가 있는 달에만 실행됩니다. 짧은 달에는 해당 값이 자동으로 건너뜁니다.
특수 문자
| 문자 | 이름 | 용도 | 예제 |
|------|------|---------|---------|
| * | 별표 | 모든 가능한 값 | 분 필드의 * = 매분 |
| , | 쉼표 | 값 나열 | 1,15,30 = 1분, 15분, 30분 |
| - | 하이픈 | 범위 | 9-17 = 9시부터 17시까지 |
| / | 슬래시 | 간격 값 | */5 = 5분마다 |
슬래시를 사용한 간격 값
슬래시는 "매 N 단위마다"를 표현합니다:
# 5분마다
*/5 * * * *
# 2시간마다
0 */2 * * *
# 업무 시간 중 15분마다
*/15 9-17 * * *
일반적인 Cron 일정 패턴
| 일정 | 표현식 | 설명 |
|----------|------------|-------------|
| 매분 | * * * * * | 하루 1,440회 실행 |
| 5분마다 | */5 * * * * | 상태 확인, 모니터링 |
| 매시간 | 0 * * * * | 매시 정각 |
| 하루 2회 | 0 6,18 * * * | 오전 6시 및 오후 6시 |
| 매일 자정 | 0 0 * * * | 기본적인 유지보수 |
| 매주 일요일 | 0 0 * * 0 | 주간 유지보수 |
| 매월 1일 | 0 0 1 * * | 월간 보고서 |
| 평일 오전 9시 | 0 9 * * 1-5 | 업무 시작 |
비표준 단축 표현
일부 cron 구현체는 @yearly(1월 1일), @monthly(매월 1일), @weekly(일요일), @daily(자정), @hourly, @reboot(시스템 시작 시 1회 실행)와 같은 이름 있는 단축 표현을 지원합니다. Vixie cron, cronie, systemd 타이머에서 지원됩니다.
흔한 실수
- 일 필드와 요일 필드를 함께 설정하면 OR 조건이 생성됩니다 — 둘 중 하나라도 일치할 때 작업이 실행되며, 이는 의도한 바가 아닌 경우가 대부분입니다.
- cron은 시스템 시간대를 사용합니다. 일광 절약 시간제 전환 근처의 작업은 두 번 실행되거나 전혀 실행되지 않을 수 있습니다.
- 항상 5개 필드를 세어보세요. 4개 필드는 유효하지 않으며, 6개 필드는 확장 cron 구문이 필요합니다.
Cron 표현식 테스트하기
cron 표현식 검증기를 사용하여 구문을 확인하고, 다가오는 실행 시간을 미리 보고, 프로덕션에 영향을 미치기 전에 오류를 발견하세요. 30초간의 검증 확인으로 조용한 일정 실패를 방지할 수 있습니다.