Cron 가이드
가이드

Cron과 시간대(타임존) 완벽 이해

서버 UTC vs 로컬 시간, TZ 지정

cron 표현식 자체에는 시간대 정보가 없습니다. 표현식이 가리키는 시각은 cron이 동작하는 시스템의 시간대를 따릅니다. 그래서 같은 0 9 * * *라도 서버 시간대가 무엇이냐에 따라 실제 실행 시각이 달라집니다.

많은 서버·컨테이너는 기본 시간대가 UTC입니다. 한국(KST)은 UTC+9이므로, UTC 서버에서 0 0 * * *(자정)로 예약하면 실제로는 한국 시간 오전 9시에 실행됩니다. 로컬 시간으로 생각하고 예약했다가 9시간 어긋나는 경우가 매우 흔합니다.

일부 cron 구현은 crontab 상단에 CRON_TZ=Asia/Seoul 같은 줄을 두어 특정 시간대로 해석하게 할 수 있습니다. 컨테이너 환경이라면 이미지의 TZ 환경변수나 /etc/localtime을 원하는 지역으로 맞추는 방법도 씁니다. 다만 지원 여부는 구현마다 다르니 확인이 필요합니다.

서머타임(DST)이 있는 지역에서는 시계가 앞뒤로 바뀌는 날 특정 시각이 건너뛰어지거나 두 번 나타날 수 있어, 그 시간대에 예약한 작업이 누락되거나 중복될 수 있습니다. 중요한 작업은 UTC 기준으로 예약하면 이런 문제를 피할 수 있습니다.

실무 팁: 표현식은 UTC로 사고하고, 배포 환경의 실제 시간대를 반드시 확인하세요. 참고로 이 사이트의 도구가 보여 주는 다음 실행 시각은 여러분의 브라우저 로컬 시간대 기준이므로, 서버 시간대와 비교해 참고하면 됩니다.

자료

스케줄 모음

복사해서 바로 쓰는 레시피

문법 치트시트

5개 필드와 특수문자 한눈에

매크로·별칭

@daily 같은 축약 표현

가이드

cron을 제대로 이해하고 실수를 줄이는 실전 가이드