라이브러리 크론 스케줄 레시피

크론 스케줄 레시피

실무에서 정말 자주 쓰는 표준 5필드 크론 표현식을 모았습니다. 카드를 클릭하면 표현식이 복사되고, 크론 도구에 붙여넣으면 쉬운 설명과 다음 실행 시각까지 확인할 수 있습니다. 카드 위의 띠는 하루(요일·날짜 단위 레시피는 주·월·연) 축 위에 실행 시점을 표시한 것입니다.

도구 열기 →
매분
* * * * *
5분마다
*/5 * * * *
10분마다
*/10 * * * *
15분마다
*/15 * * * *
30분마다
*/30 * * * *
매시 정각
0 * * * *
매시 30분
30 * * * *
3시간마다
0 */3 * * *
6시간마다
0 */6 * * *
업무 시간 매시 정각(9시부터 18시)
0 9-18 * * *
매일 자정
0 0 * * *
매일 오전 9시
0 9 * * *
매일 9시와 18시
0 9,18 * * *
야간 배치(새벽 2시 30분)
30 2 * * *
평일 오전 9시
0 9 * * 1-5
주말 자정
0 0 * * 0,6
매주 월요일 8시
0 8 * * 1
매주 금요일 18시
0 18 * * 5
매주 일요일 새벽 4시
0 4 * * 0
매월 1일 자정
0 0 1 * *
월말 구간 23시(28일부터 31일)
0 23 28-31 * *
분기 첫날 자정
0 0 1 1,4,7,10 *
매년 1월 1일 자정
0 0 1 1 *

자주 묻는 질문

크론 5개 필드는 각각 무엇을 뜻하나요?
왼쪽부터 분(0-59), 시(0-23), 일(1-31), 월(1-12), 요일(0-6, 0=일요일)입니다. 요일 7을 일요일로 받아 주는 구현도 많지만 0은 어디서나 통합니다. 일과 요일을 동시에 제한하면 대부분의 크론이 둘을 OR 로 묶어 예상보다 자주 실행되니, 이 페이지의 레시피처럼 한쪽만 지정하는 편이 안전합니다.
시간대는 어떻게 되나요?
크론은 데몬이 도는 서버의 시간대를 따릅니다. 서버가 UTC 라면 여기 적힌 "오전 9시"는 UTC 기준 9시, 즉 한국 시간 오후 6시에 돌아갑니다. crontab 을 등록하기 전에 서버 시간대부터 확인하고, 구현이 지원한다면 CRON_TZ 변수로 시간대를 못 박아 둘 수 있습니다. 서머타임이 있는 지역에서는 시계가 건너뛰거나 겹치는 새벽 시간대를 피하는 것이 좋습니다.
매월 말일 실행은 어떻게 하나요?
표준 5필드에는 말일 문법이 없습니다(L 은 Quartz 같은 스케줄러의 확장 문법입니다). 가장 흔한 우회는 28일부터 31일까지 매일 돌리면서 스크립트에서 내일이 1일인지 확인하는 것입니다. GNU date 기준으로 [ "$(date -d tomorrow +\%d)" = "01" ] 같은 조건을 앞에 붙이면 되고, crontab 안에서는 % 를 \% 로 이스케이프해야 합니다. 아예 매월 1일에 돌리고 지난달 마감으로 처리하는 방법이 더 간단할 때도 많습니다.
초 단위 실행도 되나요?
표준 crontab 의 최소 단위는 1분이라 초 필드가 없습니다. 초가 앞에 붙는 6필드 표현식은 Quartz 등 일부 라이브러리 전용이며 일반 crontab 에 넣으면 형식 오류가 납니다. 30초 간격이 필요하면 같은 명령을 두 줄 등록하고 한쪽 앞에 sleep 30 을 붙이는 방법이 널리 쓰입니다.
Family Site