Crontab의 별표(*) 5개는 무엇을 의미할까? (시스템 스케줄링의 기초)
서버를 운영하다 보면 주기적으로 실행해야 하는 작업들이 있습니다.
로그 파일 정리, 데이터베이스 백업, 이메일 발송 등이 대표적이죠. 리눅스 환경에서 이러한 작업을 예약할 때 사용하는 표준 도구가 바로 Cron입니다.
하지만 Cron 표현식(Crontab Expression)은 처음 접하는 사람에게는 마치 암호처럼 보일 수 있습니다.
* * * * *
이 5개의 별표가 각각 무엇을 의미하는지, 그리고 주의해야 할 점은 무엇인지 알아보겠습니다.
1. Crontab 문법의 구조
Cron 표현식은 5개의 필드로 구성됩니다. (일부 시스템은 초 단위까지 포함하여 6개지만, 표준 리눅스 Cron은 5개입니다.)
* * * * *
분 시 일 월 요일
(0-59) (0-23) (1-31) (1-12) (0-7)
- 분 (Minute): 0부터 59까지
- 시 (Hour): 0부터 23까지
- 일 (Day of Month): 1부터 31까지
- 월 (Month): 1부터 12까지
- 요일 (Day of Week): 0부터 7까지 (0과 7은 일요일, 1=월요일, ...)
2. 특수 문자의 마법
단순한 숫자 외에도 다양한 특수 문자를 사용하여 유연한 스케줄링이 가능합니다.
*(Asterisk): 모든 값 (매분, 매시, 매일...),(Comma): 값의 목록 (예:1,3,5-> 1, 3, 5에 실행)-(Hyphen): 범위 (예:1-5-> 1부터 5까지 실행)/(Slash): 간격 (예:*/10-> 10단위마다 실행)
예제
30 04 * * *: 매일 새벽 4시 30분에 실행*/15 * * * *: 15분마다 실행 (0, 15, 30, 45분)0 9 * * 1-5: 평일(월~금) 오전 9시 정각에 실행
3. 자주 하는 실수: "일"과 "요일"의 관계
Crontab 설정에서 가장 혼동하기 쉬운 부분은 **"일(Day of Month)"**과 "요일(Day of Week)" 필드입니다.
만약 두 필드가 모두 *이 아닌 값으로 설정되면, 둘 중 하나라도 만족할 때 실행됩니다 (OR 조건).
예를 들어:
0 0 1,15 * 5
이 설정은 "매월 1일과 15일" 그리고 "매주 금요일"에 실행됩니다. (1일이면서 금요일인 날에만 실행되는 것이 아닙니다!)
결론
Cron은 단순하지만 강력한 도구입니다.
하지만 잘못 설정된 Cron 작업은 서버 리소스를 고갈시키거나 중요한 백업을 누락시킬 수 있습니다.
복잡한 스케줄링이 필요할 때는 반드시 온라인 Crontab 생성기 등을 통해 검증하거나, Jenkins, Airflow 같은 전문 스케줄링 도구의 도입을 고려해 보세요.
관련 도구 둘러보기
Pockit의 무료 개발자 도구를 사용해 보세요