Cron 표현식 가이드

Cron 표현식 문법과 주요 예제를 정리한 가이드입니다.

Cron 표현식 형식

┌───────────── 분 (0-59)
│ ┌───────────── 시 (0-23)
│ │ ┌───────────── 일 (1-31)
│ │ │ ┌───────────── 월 (1-12)
│ │ │ │ ┌───────────── 요일 (0-6, 일=0)
*  *  *  *  *

필드별 범위

필드범위예시
분 (Minute)0-5930 → 30분
시 (Hour)0-2314 → 오후 2시
일 (Day of Month)1-3115 → 매월 15일
월 (Month)1-12 또는 JAN-DEC6 → 6월
요일 (Day of Week)0-6 또는 SUN-SAT1 → 월요일

특수 문자

문자의미예시
*모든 값분 필드에 * → 매분 실행
,여러 값 나열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)하면 디버깅에 유용합니다.

다른 도구