¿Por qué los cronjobs se ejecutan en el momento equivocado?

10

Tengo la configuración de cronjobs para que se ejecute diariamente en mi servidor Ubuntu.

p.ej. 0 4 * * * comando

Están funcionando, excepto que están funcionando 8 horas antes. Al configurar el servidor, se configuró originalmente a la hora UTC. Corrí sudo dpkg-reconfigure tzdatapara configurar el servidor en CST, que está 6 horas detrás de UTC. Curiosamente, estoy en PST, que está 8 horas detrás de UTC, pero no veo cómo el servidor podría saber eso.

Si ejecuto el comando date, muestra la hora en CST.

Debe haber algún lugar donde la hora esté configurada incorrectamente. ¿Dónde puedo buscar para resolver esto?

Matt McCormick
fuente

Respuestas:

21

¿Recordó reiniciar cron después de cambiar su zona horaria? De lo contrario, cron aún puede tener su antigua noción de la zona horaria de cuando se inició originalmente.

Aunque no es estrictamente necesario, generalmente sugiero reiniciar una máquina después de cambiar la zona horaria: la zona horaria de un servidor nunca debería cambiar (o al menos debería ser MUY infrecuente), y esto garantiza que todos los programas en el servidor se hayan reiniciado y sabe sobre el cambio :-)

voretaq7
fuente
No, no reinicié. Lo he hecho y esperaré para ver si ese es el problema (que creo que puede ser).
Matt McCormick
Después de reiniciar el servicio cron, ahora se ejecuta al mismo tiempo con la zona horaria que configuré usando tzdata. Gracias.
Donny Kurnia
1
Noté que las entradas en / var / log / cron mostraban la hora incorrecta incluso después de reiniciar crond. Reiniciar rsyslog solucionó ese problema.
zymhan
@WildVelociraptor Yeah syslog también usará los datos de la zona horaria anterior hasta que se reinicie (por lo que marcará las cosas mal aunque estén funcionando en el momento correcto). Cualquier otra cosa que sea de larga duración y que comience antes de que cambien los datos de la zona horaria exhibirá un comportamiento similar, por lo que generalmente se indica un reinicio.
voretaq7
6

Para mí, descubrí que cuando hwclockejecuté el datecomando el tiempo era una hora diferente que cuando ejecuté el comando. Para solucionarlo, puede llamar, hwclock --systohcque se sincronizará las dos veces y ejecutará los cronjobs a la hora prevista.

ajon
fuente
En mi caso, tanto datee hwclockinformar del tiempo idéntico, pero cron todavía no hace lo que cabe esperar que lo haga.
Unfa