Cron 표현식 읽는 법 완벽 정리
cron은 리눅스 crontab부터 GitHub Actions, Kubernetes CronJob, Jenkins, AWS EventBridge까지 거의 모든 스케줄러가 쓰는 표준 문법입니다. "분 시 일 월 요일" 5개 필드를 공백으로 구분하며, *(모든 값), */n(n 간격), a-b(범위), a,b(목록)을 조합합니다. 문법은 간단하지만 "0 0 * * 0이 일요일인가 월요일인가" 같은 헷갈림이 잦아, 배포 전에 반드시 검증이 필요합니다.
이 도구는 표현식을 입력하는 즉시 자연어 설명(한국어/영어)으로 바꿔주고, 다음 실행 시각 10회를 사용 중인 기기의 로컬 타임존 기준으로 계산해 보여줍니다. "평일 오전 9시"라고 생각하고 쓴 표현식이 실제로 언제 도는지 목록으로 확인하면 스케줄 실수를 배포 전에 잡을 수 있습니다.
특히 주의할 규칙: 일(day-of-month)과 요일(day-of-week)을 둘 다 제한하면 AND가 아니라 OR로 동작합니다. "0 0 13 * 5"는 "13일의 금요일"이 아니라 "매월 13일 또는 매주 금요일"입니다. 또 서버의 타임존과 표현식이 가정하는 타임존이 다르면 실행 시각이 어긋나므로, UTC 기준 스케줄러(GitHub Actions 등)에 등록할 때는 시차를 반영해야 합니다.
자주 쓰는 패턴은 프리셋 버튼으로 제공합니다: 매분(* * * * *), 매시 정각(0 * * * *), 매일 자정(0 0 * * *), 평일 9시(0 9 * * 1-5), 매월 1일(0 0 1 * *), 매주 일요일(0 0 * * 0) 등. Quartz/Spring의 6필드(초 포함) 표현식은 초 필드를 무시하고 5필드 표준으로 해석하며 안내를 표시합니다. 타임스탬프 변환기, 정규식 테스터와 함께 쓰면 서버 작업 디버깅이 한결 쉬워집니다.