Cron 표현식 생성기는 리눅스/Unix의 Cron 스케줄 표현식을 시각적으로 만들고 테스트할 수 있는 도구입니다.
🔧 빌더 모드 사용하기
• 5개 필드(분, 시, 일, 월, 요일)에 원하는 값을 입력하세요
• 각 필드는 0-59(분), 0-23(시), 1-31(일), 1-12(월), 0-6(요일) 범위를 가집니다
• 특수 문자를 활용하여 패턴을 만들 수 있습니다
• 실시간으로 생성된 표현식과 설명을 확인할 수 있습니다
✏️ 직접 입력 모드
• "직접 입력" 탭을 선택하여 완성된 cron 표현식을 붙여넣거나 수정할 수 있습니다
• 5개 필드를 공백으로 구분하여 입력하세요 (예: 0 9 * * 1)
• 입력한 표현식이 자동으로 해석되어 설명이 표시됩니다
⏰ 실행 예정 확인
• 생성된 표현식의 다음 5회 실행 시간을 미리 볼 수 있습니다
• 예상 실행 시간을 확인하여 의도한 스케줄이 맞는지 검증하세요
📋 자주 사용하는 스케줄
• 오른쪽 패널에서 자주 사용하는 패턴을 클릭하면 즉시 적용됩니다
• 매분, 매시, 매일, 매주 등 일반적인 스케줄이 미리 준비되어 있습니다
Cron 표현식은 5개의 필드로 구성되며, 각 필드는 공백으로 구분됩니다.
📝 필드 구조
`분 시 일 월 요일`
각 필드의 의미:
• 분 (0-59): 시간의 몇 분에 실행할지 지정
• 시 (0-23): 하루 중 몇 시에 실행할지 지정 (0 = 자정)
• 일 (1-31): 한 달 중 며칠에 실행할지 지정
• 월 (1-12): 일 년 중 몇 월에 실행할지 지정
• 요일 (0-6): 일주일 중 무슨 요일에 실행할지 지정 (0 = 일요일, 6 = 토요일)
🔤 특수 문자 설명
`*` (애스터리스크) - 모든 값
• 해당 필드의 모든 가능한 값을 의미합니다
• 예: 분 필드에 * 사용 시 매분마다 실행
`*/n` (슬래시) - 간격
• n마다 실행을 의미합니다
• 예: */5는 5마다 (5, 10, 15, 20...)
• 분 필드: */5 = 5분마다, 시 필드: */2 = 2시간마다
`n-m` (하이픈) - 범위
• n부터 m까지의 범위를 지정합니다
• 예: 1-5 = 1, 2, 3, 4, 5
• 요일 필드: 1-5 = 월요일부터 금요일까지 (평일)
`n,m,o` (쉼표) - 복수 값
• 여러 개의 특정 값을 지정합니다
• 예: 1,15 = 1일과 15일
• 요일 필드: 0,6 = 일요일과 토요일 (주말)
📌 실전 예제
`0 9 * * *`
→ 매일 오전 9시에 실행
`*/15 * * * *`
→ 15분마다 실행
`0 */2 * * *`
→ 2시간마다 실행 (0시, 2시, 4시...)
`0 9 * * 1-5`
→ 평일(월~금) 오전 9시에 실행
`0 0 1 * *`
→ 매월 1일 자정에 실행
`30 14 * * 0`
→ 매주 일요일 오후 2시 30분에 실행
`0 0,12 * * *`
→ 매일 자정과 정오에 실행
`0 9-17 * * 1-5`
→ 평일 9시부터 17시까지 매시간 실행
⚠️ 주의사항
1. 일(day)과 요일(weekday) 필드를 동시에 지정하면 OR 조건으로 동작합니다
• `0 0 1 * 0` = 매월 1일 OR 매주 일요일 자정
2. 월과 일 필드는 1부터 시작하지만, 분/시/요일은 0부터 시작합니다
• 분: 0-59, 시: 0-23, 일: 1-31, 월: 1-12, 요일: 0-6
3. 요일은 0(일요일)부터 6(토요일)까지입니다
• 일부 시스템에서는 7도 일요일을 의미할 수 있습니다
4. 2월의 29/30/31일, 31일이 없는 달의 31일은 실행되지 않습니다
💡 Cron 표현식 실전 활용 가이드
🎯 일반적인 사용 사례
1. 백업 자동화
• `0 2 * * *` - 매일 새벽 2시에 일일 백업
• `0 3 * * 0` - 매주 일요일 새벽 3시에 주간 백업
• `0 4 1 * *` - 매월 1일 새벽 4시에 월간 백업
2. 데이터베이스 유지보수
• `0 1 * * *` - 매일 새벽 1시에 DB 정리 작업
• `30 2 * * 0` - 매주 일요일 새벽 2시 30분에 인덱스 재구성
• `0 0 1 */3 *` - 3개월마다 1일 자정에 아카이빙
3. 보고서 생성
• `0 9 * * 1` - 매주 월요일 오전 9시에 주간 보고서
• `0 10 1 * *` - 매월 1일 오전 10시에 월간 보고서
• `0 8 1 1 *` - 매년 1월 1일 오전 8시에 연간 보고서
4. 로그 관리
• `0 0 * * *` - 매일 자정에 로그 로테이션
• `*/30 * * * *` - 30분마다 로그 압축 및 정리
• `0 3 * * 0` - 매주 일요일 새벽 3시에 오래된 로그 삭제
5. 모니터링 및 알림
• `*/5 * * * *` - 5분마다 시스템 상태 확인
• `*/10 * * * *` - 10분마다 디스크 용량 체크
• `0 */4 * * *` - 4시간마다 서비스 헬스체크
⚙️ 성능 최적화 팁
1. 부하 분산
• 많은 작업이 0분에 몰리지 않도록 시작 시간을 분산하세요
• 나쁜 예: `0 * * * *` (매시 정각)
• 좋은 예: `7 * * * *` (매시 7분) - 부하 분산
2. 리소스 고려
• CPU 사용량이 높은 작업은 트래픽이 적은 새벽 시간대에 실행
• `0 3 * * *` - 새벽 3시 (서버 유휴 시간)
3. 중복 실행 방지
• 작업 실행 시간이 간격보다 길면 중복 실행 위험
• 실행 시간을 고려하여 충분한 간격 설정
🔍 디버깅 팁
1. 테스트는 짧은 간격으로
• 개발 중에는 `*/1 * * * *` (매분)로 테스트
• 확인 후 실제 스케줄로 변경
2. 로그 확인
• Cron 작업의 로그를 반드시 기록하세요
• 실패 시 이메일 알림 설정 고려
3. 시간대 확인
• 서버의 시간대(timezone)를 확인하세요
• UTC와 로컬 시간 차이에 주의
🛡️ 보안 고려사항
1. 최소 권한 원칙
• Cron 작업은 필요한 최소 권한으로만 실행
• root 권한이 필요한 경우가 아니면 일반 사용자로 실행
2. 경로 명시
• 절대 경로를 사용하여 스크립트 실행
• 나쁜 예: `backup.sh`
• 좋은 예: `/home/user/scripts/backup.sh`
3. 환경 변수
• Cron 환경은 제한적이므로 필요한 환경 변수를 명시
• PATH, HOME 등을 스크립트 내에서 설정
📚 도구별 Cron 활용
1. Linux Crontab
• `crontab -e` - cron 작업 편집
• `crontab -l` - 현재 cron 작업 목록 확인
• `/var/log/cron` - cron 로그 위치
2. Jenkins
• Build Triggers에서 "Build periodically" 선택
• Cron 표현식으로 빌드 스케줄 설정
3. GitHub Actions
• `schedule` 이벤트에서 cron 사용
• UTC 시간대 기준으로 동작
4. AWS CloudWatch Events
• Rule 생성 시 Cron expression 사용
• 6개 필드 형식 사용 (초 포함)
5. Kubernetes CronJob
• spec.schedule에 표준 cron 표현식 사용
• 분산 환경에서의 실행 관리