Cron Expression 빌더 완벽 가이드
Cron Expression(크론 표현식)은 유닉스 및 리눅스 시스템에서 예약 작업(스케줄링)을 설정할 때 사용하는 표준 문법입니다. 크론탭(crontab)을 통해 서버에서 특정 시간에 스크립트를 자동 실행하거나, 주기적으로 데이터를 백업하고, 로그를 정리하는 등 다양한 자동화 작업을 수행할 수 있습니다. 크론 표현식은 5개의 필드로 구성되며, 각 필드는 분(0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-6, 0은 일요일)을 의미합니다.
크론 표현식의 구조
크론 표현식의 기본 형식은 분 시 일 월 요일입니다. 각 필드에는 다음과 같은 특수 문자를 사용할 수 있습니다:
- * (별표): 모든 값을 의미합니다. 예를 들어 분 필드에 *를 넣으면 매분을 뜻합니다.
- , (쉼표): 여러 값을 나열합니다. 예:
0,15,30,45는 0분, 15분, 30분, 45분을 의미합니다. - - (하이픈): 범위를 지정합니다. 예:
9-17은 9시부터 17시까지를 의미합니다. - / (슬래시): 간격을 지정합니다. 예:
*/5는 5분마다,*/2는 2시간마다를 의미합니다.
자주 사용하는 크론 표현식 예제
* * * * *- 매분 실행0 * * * *- 매시 정각에 실행0 0 * * *- 매일 자정에 실행0 9 * * 1-5- 평일 오전 9시에 실행0 0 1 * *- 매월 1일 자정에 실행*/10 * * * *- 10분마다 실행
이 도구를 사용하면 복잡한 크론 문법을 외우지 않아도 직관적인 UI로 원하는 스케줄을 설정할 수 있습니다. 생성된 표현식은 리눅스 crontab, Jenkins, Kubernetes CronJob, AWS CloudWatch Events, GitHub Actions 등 다양한 환경에서 그대로 사용할 수 있습니다. 다음 실행 시간 미리보기 기능을 통해 설정한 표현식이 의도한 대로 동작하는지 즉시 확인할 수 있어 실수를 방지할 수 있습니다.
자주 묻는 질문 (FAQ)
Q. 크론 표현식에서 요일 0은 일요일인가요, 월요일인가요?
A. 표준 유닉스 crontab에서 0은 일요일을 의미합니다. 1은 월요일, 2는 화요일 순서이며, 7도 일부 시스템에서 일요일로 인식됩니다. 이 도구에서는 0=일요일 기준으로 동작합니다.
Q. 5자리와 6자리 크론 표현식의 차이점은 무엇인가요?
A. 표준 유닉스 크론탭은 5자리(분 시 일 월 요일)를 사용합니다. 6자리 표현식은 앞에 '초' 필드가 추가된 것으로, Spring Framework, Quartz 스케줄러 등 일부 프레임워크에서 지원합니다. 이 도구는 가장 범용적인 5자리 형식을 기본으로 생성합니다.
Q. 생성된 크론 표현식을 실제 서버에 어떻게 적용하나요?
A. 리눅스 서버에서는 터미널에서 crontab -e 명령어를 실행한 후, 생성된 크론 표현식 뒤에 실행할 명령어를 추가하면 됩니다. 예: 0 9 * * * /usr/bin/python3 /home/user/backup.py와 같이 작성합니다. Jenkins나 GitHub Actions 등에서는 해당 플랫폼의 스케줄 설정 필드에 표현식을 입력하면 됩니다.
Q. 크론 표현식에서 일(day)과 요일(weekday)을 동시에 지정하면 어떻게 되나요?
A. 표준 cron에서는 일과 요일이 모두 *가 아닌 경우, OR 조건으로 동작합니다. 즉 0 0 15 * 1은 "매월 15일 또는 매주 월요일"에 실행됩니다. 이 점은 많은 사용자가 혼동하는 부분이므로 주의가 필요합니다.