Guías de Cron
Guías

Cron y las zonas horarias: guía completa

UTC del servidor vs. hora local, cómo indicar TZ

La expresión de cron en sí no contiene información de zona horaria. La hora a la que apunta la expresión sigue la zona horaria del sistema en el que funciona cron. Por eso, una misma 0 9 * * * se ejecuta a una hora real distinta según cuál sea la zona horaria del servidor.

Muchos servidores y contenedores tienen UTC como zona horaria por defecto. Como Corea (KST) es UTC+9, si en un servidor UTC programas 0 0 * * * (medianoche), en realidad se ejecuta a las 9 de la mañana hora de Corea. Es muy frecuente programar pensando en la hora local y acabar con un desfase de 9 horas.

Algunas implementaciones de cron permiten poner una línea como CRON_TZ=Asia/Seoul al principio del crontab para que se interprete con una zona horaria concreta. En un entorno de contenedores también se usa el método de ajustar la variable de entorno TZ de la imagen o /etc/localtime a la región deseada. Sin embargo, la compatibilidad varía según la implementación, así que conviene comprobarlo.

En las regiones con horario de verano (DST), en el día en que el reloj se adelanta o se atrasa una hora determinada puede saltarse o aparecer dos veces, por lo que una tarea programada en esa franja puede omitirse o duplicarse. Si programas las tareas importantes con base en UTC, puedes evitar estos problemas.

Consejo práctico: piensa las expresiones en UTC y comprueba siempre la zona horaria real del entorno de despliegue. Como referencia, las próximas ejecuciones que muestra la herramienta de este sitio se basan en la zona horaria local de tu navegador, así que úsalas comparándolas con la zona horaria del servidor.

Recursos

Colección de horarios

Recetas para copiar y usar al instante

Chuleta de sintaxis

Los 5 campos y los caracteres especiales de un vistazo

Macros y alias

Expresiones abreviadas como @daily

Guías

Guías prácticas para entender bien cron y cometer menos errores