이게 뭔가요?
cron 표현식은 */5 9-18 * * 1-5 처럼 다섯 개의 필드(분·시·일·월·요일)로 반복 일정을 정의하는 문법입니다. 눈으로 읽기 어렵기 때문에, 이 도구는 각 필드를 사람이 읽는 문장으로 풀어주고 앞으로의 실행 시각 5개를 계산해 보여줍니다. 별표, 스텝(예: 5분마다), 범위(a-b), 목록(a,b,c) 표기를 지원합니다.
언제 쓰나요?
배치 작업이나 크론잡, CI 스케줄, 서버리스 예약 트리거를 설정하기 전에 “이 표현식이 정말 내가 원하는 시각에 도는지” 확인할 때 씁니다. 특히 남이 작성한 cron을 인수인계받아 해석해야 할 때 유용합니다.
실무에서 자주 틀리는 점
- 요일 번호. 대부분의 cron에서 0은 일요일입니다(일부 시스템은 7도 일요일로 취급). 월요일을 0으로 착각하면 하루씩 밀립니다.
- 일(day-of-month)과 요일(day-of-week)의 OR 관계. 두 필드를 모두 지정하면 표준 cron은 둘 중 하나만 맞아도 실행합니다. “매월 1일이면서 월요일”을 의도했다가 “1일 또는 월요일”이 되는 함정입니다.
- 타임존. cron은 실행 서버의 시간대를 따릅니다. UTC 서버에 한국 시각 기준으로 표현식을 짜면 9시간 어긋납니다.
*/n의 시작점.*/20은 0, 20, 40분이지, “지금부터 20분마다”가 아닙니다.
실무에서 — 매일 새벽 배치를 UTC 서버에 KST 기준으로
0 3 * * *라 적어두고, 왜 낮 12시에 도는지 몰라 한참 헤맨 적이 있다. 서버 타임존이 UTC라 9시간 밀린 거였다. 또 “매주 월요일”을 적으며 요일 번호를 헷갈려 하루씩 밀린 적도 있다(0이 일요일인 시스템이 많다). 지금은 cron을 짜면 반드시 다음 실행 시각을 눈으로 확인한다.