요약
매 월 매 일 월요일부터 금요일까지 9시 0분에 실행
| 필드 | 값 | 설명 |
|---|---|---|
| 분 | 0 | 0분 |
| 시 | 9 | 9시 |
| 일 | * | 매 일 |
| 월 | * | 매 월 |
| 요일 | 1-5 | 월요일부터 금요일까지 |
📖 핵심 요약
서버에서 백업을 돌리거나 매일 같은 시간에 알림을 보내야 할 때 빠지지 않고 등장하는 것이 바로 cron(크론)입니다. cron은 정해진 시간에 명령을 자동으로 실행해 주는 유닉스/리눅스의 스케줄러이고, 그 실행 시점을 한 줄로 표현한 것이 cron 표현식입니다. 그런데 */10 * * * * 같은 기호가 처음 보면 무엇을 뜻하는지 헷갈리기 쉽습니다. 이 글에서는 cron 표현식을 구성하는 5개 필드와 특수문자의 의미를 정리하고, 실무에서 바로 쓸 수 있는 스케줄 예시를 표로 보여 드립니다. 직접 만든 표현식이 의도대로 동작하는지 확인하려면 크론 표현식 해석기에 입력해 보면 다음 실행 시각까지 한눈에 검증할 수 있습니다.
한눈에 보기
- cron 표현식은 공백으로 구분된 5개 필드로 이루어집니다: 분, 시, 일, 월, 요일.
- 각 필드 범위는 분(0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-7)이며 요일의 0과 7은 모두 일요일입니다.
- 핵심 기호 4개:
*(모든 값),*/n(n마다),a-b(범위),a,b,c(목록). - 예)
0 9 * * 1은 매주 월요일 09:00,*/10 * * * *는 10분마다 실행됩니다. - 일부 시스템(예: Quartz, 일부 컨테이너 스케줄러)은 맨 앞에 초 필드를 더한 6필드를 씁니다.
❓ 자주 묻는 질문
요일 필드의 0과 7은 어떤 차이가 있나요? 둘 다 일요일을 가리킵니다. 0~6으로 쓰면 0이 일요일, 6이 토요일이고, 7은 일요일을 한 번 더 표현하기 위한 값이라 0과 동일하게 동작합니다.
일 필드와 요일 필드를 동시에 지정하면 어떻게 되나요?
대부분의 cron 구현에서는 두 조건 중 하나라도 맞으면 실행되는 OR 방식으로 처리됩니다. 예를 들어 0 0 1 * 1은 매월 1일 또는 매주 월요일에 모두 실행되므로, 정확히 "월요일이면서 1일"만 노리는 의도와 다를 수 있어 주의가 필요합니다.
*와 */1은 같은 뜻인가요?
네, 같습니다. *는 그 필드의 모든 값을 의미하고 */1은 1마다이므로 결국 모든 값을 포함해 결과가 동일합니다. 보통은 더 간결한 *를 씁니다.
초 단위로 실행하려면 어떻게 하나요? 표준 5필드 cron은 최소 단위가 1분이라 초 단위 실행은 표현할 수 없습니다. 초가 필요하다면 6필드(맨 앞에 초 추가)를 지원하는 Quartz나 일부 컨테이너 스케줄러를 사용해야 합니다.
cron 표현식은 5개 필드와 네 개의 특수문자만 이해하면 대부분의 반복 작업을 손쉽게 자동화할 수 있는 강력한 도구입니다. 위의 예시 패턴을 기준으로 필요한 시각에 맞춰 값을 조절해 보고, 운영에 적용하기 전에는 크론 표현식 해석기로 다음 실행 시각을 꼭 확인해 의도와 일치하는지 점검하세요.