cron 표현식 6자리: 맨 앞이 초인가요, 맨 끝이 연도인가요?
표준 cron은 필드가 5개입니다. 6자리 cron 표현식은 맨 앞에 초를 더하거나(Spring, Quartz, Azure Functions) 맨 끝에 연도를 더합니다(AWS).

필드가 6개인(6자리) cron 표현식은 분, 시, 일, 월, 요일로 이뤄진 표준 다섯 필드 cron에 필드 하나를 더한 것이며, 어떤 필드를 더하는지는 스케줄러가 정합니다. Spring, Quartz, Azure Functions는 맨 앞에 초를 더하고, AWS EventBridge Scheduler는 맨 끝에 연도를 더합니다. Linux crontab과 Kubernetes CronJob은 필드 다섯 개를 받으므로, 한 시스템에서 다른 시스템으로 복사한 문자열은 엉뚱한 시각에 실행되거나 아예 파싱되지 않을 수 있습니다.
스케줄러 관련 내용은 출처에 나열한 각 벤더의 자체 문서에서, Sume 관련 내용은 Scheduled와 스케줄 만들기 문서, 그리고 현재 코드에서 가져왔습니다. 모두 2026-09-28에 확인했습니다.
필드를 5개 쓰는 스케줄러와 6개 쓰는 스케줄러는 무엇인가요?
아래 표는 월요일부터 금요일까지 오전 9:00이라는 스케줄 하나를 방언별로 적은 것입니다. 요일 필드를 눈여겨보세요. 시스템마다 숫자가 달라집니다.
| 스케줄러 | 필드 수 | 순서 | 월–금 오전 9:00 |
|---|---|---|---|
| Linux crontab(cronie) | 5 | 분, 시, 일, 월, 요일 | 0 9 * * 1-5 |
| Kubernetes CronJob | 5 | 분, 시, 일, 월, 요일 | 0 9 * * 1-5 |
Spring @Scheduled | 6 | 초, 분, 시, 일, 월, 요일 | 0 0 9 * * MON-FRI |
| Quartz | 6, 선택 항목인 연도를 넣으면 7 | 초, 분, 시, 일, 월, 요일, 연도 | 0 0 9 ? * 2-6 |
| Azure Functions 타이머(NCRONTAB) | 6(5필드 형식도 동작) | 초, 분, 시, 일, 월, 요일 | 0 0 9 * * 1-5 |
| AWS EventBridge Scheduler | 6 | 분, 시, 일, 월, 요일, 연도 | cron(0 9 ? * 2-6 *) |
| Sume Scheduled | 5, 여기에 IANA 타임존 | 분, 시, 일, 월, 요일 | 0 9 * * 1-5 |
1-5가 어떤 스케줄러에서는 월요일부터 금요일인데, 다른 스케줄러에서는 왜 아닌가요?
요일 번호는 시스템끼리 호환되지 않습니다. crontab과 Spring은 0부터 7까지 허용하며 0과 7이 모두 일요일입니다. Kubernetes는 일요일부터 토요일까지를 0부터 6으로 세고, Azure는 일요일부터 시작해 요일에 0부터 6까지 번호를 매깁니다. Quartz와 AWS는 일요일부터 1에서 7까지 셉니다. Quartz는 2#1을 그달의 첫 번째 월요일로, AWS는 3#2를 두 번째 화요일로 읽습니다. 그래서 1-5는 앞의 네 곳에서는 월요일부터 금요일이고, 평일이 2-6인 뒤의 두 곳에서는 일요일부터 목요일입니다.
스케줄러가 받아 준다면 세 글자 요일 이름으로 이런 혼동을 피할 수 있습니다. crontab은 mon-fri 같은 이름 범위를 받고, Spring과 Quartz는 자체 예제에서 MON-FRI를 쓰며, AWS는 요일 값으로 SUN-SAT을 나열합니다. Quartz와 AWS는 일과 요일, 두 날짜 필드에도 제약을 둡니다. Quartz는 현재로서는 둘 중 하나에 반드시 ?를 써야 한다고 말하고, AWS는 두 필드 모두에 *를 받지 않으며 다른 쪽에 ?를 요구합니다. 표에서 두 스케줄러의 행이 일 필드에 ?를 넣은 이유가 이것입니다.
cron 표현식으로 몇 초마다 실행할 수 있나요?
첫 필드가 초인 방언에서만 가능합니다. Spring의 */10 * * * * *는 십 초마다 실행되고, Azure의 5-7 * * * * *는 매분 5초부터 7초까지 실행됩니다. crontab은 매분 항목을 검사하므로 가장 작은 간격이 분 단위입니다. AWS의 여섯 번째 필드는 초가 아니라 연도입니다. EventBridge Scheduler는 60초 정밀도로 대상을 호출합니다. Sume의 Scheduled에도 초 필드는 없습니다.
6필드 표현식은 어떻게 5필드로 바꾸나요?
- 초가 맨 앞인 경우(Spring, Quartz, Azure): 첫 필드를 지우세요. 첫 필드에
0처럼 값이 하나만 있을 때만 통하는 방법입니다. 다섯 필드로는 일 분 안에 두 번 실행할 수 없습니다. - 연도가 맨 끝인 경우(AWS):
cron(, 닫는), 연도를 지우세요. 특정 연도 하나로 고정한 스케줄은 다섯 필드로 표현할 수 없습니다. ?는*로 바꾸고 요일 번호를 다시 매기세요. Quartz와 AWS의2-6은 crontab의1-5입니다.- 일과 요일 필드를 모두 확인하세요. 두 필드가 모두 제한되어 있으면 crontab은 둘 중 하나만 맞아도 명령을 실행합니다.
30 4 1,15 * 5는 1일, 15일, 그리고 매주 금요일 오전 4:30에 실행됩니다. - 여섯 필드를 crontab 줄에 그대로 붙여 넣지 마세요. crontab에서는 여섯 번째 필드가 실행할 명령이므로 모든 값이 한 칸씩 밀리고, 마지막 시간 필드가 명령의 일부가 됩니다.
Sume의 Scheduled는 어떤 cron 형식을 받나요?
IANA 타임존 기준의 다섯 필드입니다. Sume 스케줄은 정해진 주기로 실행되는, 저장해 둔 Agents 자동화입니다. 매시간·매일·매주 프리셋은 표현식을 대신 써 주고, 사용자 지정은 원본 표현식을 받습니다. 현재 코드에서 생성 양식의 평일 옵션은 월요일부터 금요일까지를 뜻하는 M H * * 1-5를 씁니다. 여섯 필드 스케줄은 위 규칙대로 옮기면 되므로, Spring의 0 0 9 * * MON-FRI는 0 9 * * 1-5가 됩니다.
현재 코드는 다른 스케줄러가 받아 주는 것도 거부합니다. 여섯 번째 필드는 cron_expr must be 5 fields (minute hour day-of-month month day-of-week); seconds are not supported. 오류로 실패하고, @daily 같은 매크로도 거부되며, 알 수 없는 타임존도 마찬가지입니다. 스케줄을 어디서 작성하는지, 트리거와 영수증은 어떤지는 AI 영상 에이전트 스케줄 실행에서 다룹니다.
출처
관련 글
개발자 카테고리의 다른 글
- curl Bearer 토큰: Authorization 헤더 보내는 법
curl에서 bearer 토큰은 $TOKEN이 확장되도록 큰따옴표로 감싼 Authorization: Bearer 헤더나 --oauth2-bearer로 보내세요. 401별 해결법도 담았습니다.
- fal.ai와 Replicate 대안: AI 영상 생성 API 비교
AI 영상 생성에서 fal.ai와 Replicate의 대안은 Kling과 Runway의 자체 API, Higgsfield, Sume입니다. 모델과 과금 방식으로 비교했습니다.
- FFmpeg로 영상 합치기: concat 디먹서 vs concat 필터
FFmpeg로 영상을 이어 붙일 때 설정이 같은 파일은 concat 디먹서와 -c copy로 재인코딩 없이 잇고, 서로 다른 클립은 concat 필터로 재인코딩해 잇습니다.
- FFmpeg로 영상에서 오디오 추출하기: 복사, MP3, WAV
FFmpeg로 영상에서 오디오를 추출하려면 -vn으로 화면을 빼고, -c:a copy로 오디오를 그대로 두거나 인코더로 WAV나 MP3를 쓰세요.
작성자 Sume