Cron 표현식 가이드
Cron 표현식 문법과 주요 예제를 정리한 가이드입니다.
Cron 표현식 형식
┌───────────── 분 (0-59)
│ ┌───────────── 시 (0-23)
│ │ ┌───────────── 일 (1-31)
│ │ │ ┌───────────── 월 (1-12)
│ │ │ │ ┌───────────── 요일 (0-6, 일=0)
* * * * *필드별 범위
| 필드 | 범위 | 예시 |
|---|---|---|
| 분 (Minute) | 0-59 | 30 → 30분 |
| 시 (Hour) | 0-23 | 14 → 오후 2시 |
| 일 (Day of Month) | 1-31 | 15 → 매월 15일 |
| 월 (Month) | 1-12 또는 JAN-DEC | 6 → 6월 |
| 요일 (Day of Week) | 0-6 또는 SUN-SAT | 1 → 월요일 |
특수 문자
| 문자 | 의미 | 예시 |
|---|---|---|
* | 모든 값 | 분 필드에 * → 매분 실행 |
, | 여러 값 나열 | 1,3,5 → 월, 수, 금요일에 실행 |
- | 범위 지정 | 1-5 → 월~금 (평일) |
/ | 간격 지정 | */10 → 매 10단위마다 실행 |
L | 마지막 (일/요일 필드) | 일 필드에 L → 매월 마지막 날 |
W | 가장 가까운 평일 (일 필드) | 15W → 15일에 가장 가까운 평일 |
# | n번째 요일 (요일 필드) | 5#3 → 세 번째 금요일 |
? | 지정하지 않음 (일/요일) | 일 필드 ? → 요일 필드에 위임 |
자주 쓰는 예제
기본 주기
| 표현식 | 설명 |
|---|---|
* * * * * | 매분 실행 |
*/5 * * * * | 매 5분마다 실행 |
*/10 * * * * | 매 10분마다 실행 |
*/15 * * * * | 매 15분마다 실행 |
*/30 * * * * | 매 30분마다 실행 |
0 * * * * | 매시 정각 실행 |
0 */2 * * * | 2시간마다 정각 실행 |
0 */6 * * * | 6시간마다 정각 실행 |
매일 실행
| 표현식 | 설명 |
|---|---|
0 0 * * * | 매일 자정 (00:00) 실행 |
0 6 * * * | 매일 오전 6시 실행 |
0 9 * * * | 매일 오전 9시 실행 |
0 12 * * * | 매일 정오 (12:00) 실행 |
0 18 * * * | 매일 오후 6시 실행 |
0 9,18 * * * | 매일 오전 9시, 오후 6시 실행 |
0 9-18 * * * | 매일 오전 9시~오후 6시 매시 정각 |
30 2 * * * | 매일 새벽 2시 30분 실행 |
요일 지정
| 표현식 | 설명 |
|---|---|
30 9 * * 1-5 | 평일(월~금) 오전 9시 30분 |
0 0 * * 0 | 매주 일요일 자정 |
0 0 * * 1 | 매주 월요일 자정 |
0 0 * * 5 | 매주 금요일 자정 |
0 0 * * 6,0 | 주말(토, 일) 자정 |
*/30 9-17 * * 1-5 | 평일 근무시간(9-17시) 30분마다 |
0 2 * * 6 | 매주 토요일 새벽 2시 (백업 등) |
월/일 지정
| 표현식 | 설명 |
|---|---|
0 0 1 * * | 매월 1일 자정 |
0 0 15 * * | 매월 15일 자정 |
0 0 1,15 * * | 매월 1일, 15일 자정 |
0 0 1 1 * | 매년 1월 1일 자정 |
0 0 1 */3 * | 3개월마다 1일 자정 (분기) |
0 0 1 1,4,7,10 * | 분기 시작일(1,4,7,10월) 자정 |
0 9 25 12 * | 매년 12월 25일 오전 9시 |
프리셋 (축약형)
| 프리셋 | 동일 표현식 | 설명 |
|---|---|---|
@yearly / @annually | 0 0 1 1 * | 매년 1월 1일 자정 |
@monthly | 0 0 1 * * | 매월 1일 자정 |
@weekly | 0 0 * * 0 | 매주 일요일 자정 |
@daily / @midnight | 0 0 * * * | 매일 자정 |
@hourly | 0 * * * * | 매시 정각 |
@reboot | - | 시스템 재부팅 시 한 번 실행 |
자주 묻는 질문
Cron 표현식이란 무엇인가요?↓
Cron 표현식은 작업(Job)을 특정 시간이나 주기로 자동 실행하기 위한 스케줄링 문법입니다. Linux/Unix의 crontab, Jenkins, GitHub Actions, AWS CloudWatch 등에서 널리 사용됩니다. 기본적으로 5개의 필드(분, 시, 일, 월, 요일)로 구성됩니다.
Cron에서 * 와 */5의 차이는 무엇인가요?↓
*는 해당 필드의 모든 값을 의미합니다. */5는 "매 5단위마다"를 의미합니다. 예를 들어 분 필드에 *는 매분, */5는 0, 5, 10, 15... 분에 실행됩니다. */5는 0/5와 동일합니다.
Cron 표현식에서 요일은 어떻게 지정하나요?↓
요일 필드에 0-6(일요일=0, 토요일=6) 또는 SUN-SAT으로 지정합니다. 1-5는 월~금(평일), 0,6은 주말입니다. 시스템에 따라 7도 일요일로 인식됩니다.
매월 마지막 날에 실행하려면 어떻게 하나요?↓
일 필드에 L을 사용합니다. "0 0 L * *"은 매월 마지막 날 자정에 실행됩니다. L은 Last를 의미하며, 월별로 28일, 29일, 30일, 31일을 자동으로 처리합니다.
Cron 표현식 5개 필드와 6개 필드의 차이는 무엇인가요?↓
표준 crontab은 5개 필드(분 시 일 월 요일)를 사용합니다. Spring이나 Quartz 같은 프레임워크는 초(seconds) 필드를 추가한 6개 필드를 사용합니다. 환경에 따라 확인이 필요합니다.
crontab을 편집하고 로그를 확인하려면 어떻게 하나요?↓
crontab -e로 편집하고 crontab -l로 목록을 확인합니다. 로그는 보통 /var/log/syslog나 /var/log/cron에 기록됩니다. 명령어 출력을 파일로 리다이렉트(>> /tmp/cron.log 2>&1)하면 디버깅에 유용합니다.