Quartz Cron과 리눅스 Cron 표현식 차이 (초 단위, 필드 개수)
배치 개발 후 스케줄을 거는데… 크론 표현식을 그냥 무지성으로 GPT 한테 물어본대로 적고 커밋 했었다… 근데 Moon매니저님이 크론 표현식은 두번째가 시 이라고 하는게 아닌가? 지피티한테 속은줄 알고 수정했으나… Quartz Cron은 여섯자리로 결론은… 내가 맞았다… Quartz Cron에 대해 확실히 알았으면 이런일이 없었을터인데…. 그동안 AI한테 많이 데여서 사람을 믿어야지 했다가 … 그만…. ㅋㅋ Quartz Cron에 대해 확실히 알고 가자…
1. 필드 개수 차이
✔ 일반 Cron (Linux)
일반 Cron은 5개의 필드를 사용함:
분 시 일 월 요일1
예시:
21 * * * *1
→ 매 시 21분에 실행됨
✔ Quartz Cron
Quartz Cron은 6~7개의 필드를 사용함:
초 분 시 일 월 요일 [년도]1
예시:
0 21 * * * ?1
→ 매 시 21분 0초에 실행됨
2. 초 단위 지원 여부
✔ 일반 Cron
초 단위 스케줄링을 지원하지 않음
✔ Quartz Cron
초 단위까지 지원함
예시:
5 * * * * ?1
→ 매 분 5초에 실행됨
3. 특수 문자 기능
✔ Quartz Cron만 제공하는 특수 문자
?: 특정하지 않음을 의미함L: 마지막 일 또는 마지막 요일을 의미함#: 몇 번째 요일을 의미함 (예: 2#1 = 매월 첫 번째 월요일)W: 가장 가까운 평일을 의미함
예시:
0 0 8 ? * MON-FRI1
→ 매주 월~금 08시에 실행됨
4. 요일 표현 방식 차이
✔ 일반 Cron
숫자 또는 약어로 요일을 표현함
0 = 일요일
1 = 월요일
...1
2
3
2
3
✔ Quartz Cron
MON, TUE 같은 문자열 표현을 지원함
또는 1=SUN 같은 방식도 사용 가능함
또한 ? 사용 가능함
5. 사용 목적의 차이
| 구분 | Quartz Cron | 일반 Cron |
|---|---|---|
| 실행 위치 | 자바 애플리케이션 내부 스케줄러 | 서버 OS의 Cron |
| 필드 개수 | 6~7개 | 5개 |
| 초 단위 지원 | O | X |
| 특수 문자 | 매우 다양함 | 제한적임 |
| 복잡한 스케줄 | 쉽게 가능함 | 어려움 |
| TimeZone 설정 | 쉽게 설정 가능함 | 별도 설정 필요함 |