포켓인포
테크 가이드

크론(cron) 표현식 완전 정복 — 5필드와 예시 패턴

cron 표현식의 5개 필드(분·시·일·월·요일)와 *, */n, 범위·목록 기호를 자주 쓰는 스케줄 예시로 쉽게 설명합니다.

서버에서 백업을 돌리거나 매일 같은 시간에 알림을 보내야 할 때 빠지지 않고 등장하는 것이 바로 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필드를 씁니다.

cron이란 무엇인가

cron은 백그라운드에서 계속 떠 있으면서 정해진 시각이 되면 등록된 작업을 실행하는 데몬(프로그램)입니다. 실행할 작업과 시각을 적어 둔 설정 파일을 crontab(크론 탭)이라고 부르며, 한 줄에 "언제 실행할지"를 나타내는 cron 표현식과 "무엇을 실행할지"를 나타내는 명령을 함께 적습니다. 사람이 매번 직접 명령을 치지 않아도 로그 정리, 데이터베이스 백업, 캐시 갱신, 정기 알림 발송 같은 반복 작업을 자동으로 처리할 수 있어 서버 운영과 자동화의 기본 도구로 널리 쓰입니다.

5개 필드 이해하기

표준 cron 표현식은 공백으로 구분된 5개의 필드로 구성되며, 왼쪽부터 순서대로 분 → 시 → 일 → 월 → 요일을 의미합니다. 각 필드가 가질 수 있는 값의 범위는 정해져 있습니다.

순서필드허용 범위설명
10-590분부터 59분까지
20-230시(자정)부터 23시까지
31-31매월 1일부터 31일까지
41-121월부터 12월까지
5요일0-70과 7은 모두 일요일, 1=월요일 … 6=토요일

예를 들어 30 14 * * *는 "매일 14시 30분"을 뜻합니다. 분 필드에 30, 시 필드에 14가 들어가고 나머지 일·월·요일은 모두 *(모든 값)이므로 날짜와 요일에 상관없이 매일 같은 시각에 실행됩니다.

특수문자 4가지

cron의 강력함은 각 필드에 쓰는 특수문자에서 나옵니다. 자주 쓰는 기호 네 가지만 알아도 대부분의 스케줄을 표현할 수 있습니다.

기호의미예시해석
*모든 값* * * * *매분 실행
*/nn마다*/10 * * * *10분마다
a-b범위0 9-18 * * *9시부터 18시까지 매시 정각
a,b,c목록0 0,12 * * *매일 0시와 12시

이 기호들은 서로 조합할 수 있습니다. 예컨대 0 8 * * 1-5처럼 요일 필드에 범위를 쓰면 평일에만 동작하게 만들 수 있고, 0,30 * * * *처럼 목록을 쓰면 매시 0분과 30분에 실행됩니다.

자주 쓰는 패턴 예시

아래는 실무에서 빈번하게 쓰이는 cron 표현식 모음입니다. 그대로 복사해 쓰거나 값을 조금 바꿔 활용해 보세요.

표현식실행 시점
0 9 * * 1매주 월요일 09:00
*/10 * * * *10분마다
0 0 1 * *매월 1일 00:00
30 8 * * 1-5평일(월~금) 08:30
0 */6 * * *6시간마다(0·6·12·18시)
0 0 * * 0매주 일요일 00:00

표현식이 복잡해질수록 머릿속으로만 계산하면 실수하기 쉽습니다. 작성한 표현식을 크론 표현식 해석기에 붙여 넣으면 사람이 읽을 수 있는 문장과 다음 실행 시각을 보여 주므로, 운영 환경에 올리기 전에 한 번 검증하는 습관을 들이면 좋습니다.

자주 묻는 질문

요일 필드의 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개 필드와 네 개의 특수문자만 이해하면 대부분의 반복 작업을 손쉽게 자동화할 수 있는 강력한 도구입니다. 위의 예시 패턴을 기준으로 필요한 시각에 맞춰 값을 조절해 보고, 운영에 적용하기 전에는 크론 표현식 해석기로 다음 실행 시각을 꼭 확인해 의도와 일치하는지 점검하세요.

#cron#크론 표현식#스케줄#crontab#자동화

🧰 관련 도구

관련 글