Problema de zona horaria con cron

11

Mis trabajos cron se calculan una hora más tarde en comparación con la hora del servidor. No entiendo lo que está pasando.

Mi configuración es la siguiente:

Tiempo de Servidor :

Europe/Paris

En / etc / default / cron agregué la siguiente línea:

TZ="Europe/Paris"

A pesar de eso, el trabajo cron se inicia una hora más tarde que la hora del servidor. Lo que es realmente complicado, es que si le pido a cron que reproduzca la instrucción "fecha", le da la fecha del servidor (¡la buena!).

No tengo idea de cómo resolver este problema; He estado leyendo un poco en los foros, pero no encontré nada interesante.

Qué piensas ?

Guillaume Lebourgeois
fuente
44
Entonces, los trabajos cron se están programando en UTC. La página de manual de Vixie cron dice: "El demonio usará, si está presente, la definición de / etc / timezone para la zona horaria". ¿Qué hay en /etc/timezone? ¿Ha modificado /etc/timezonemás recientemente que cronse inició el proceso? ¿Lo has intentado /etc/init.d/cron restart?
Keith Thompson el
3
/ etc / timezone ha sido modificado recientemente, sin reiniciar /etc/init.d/cron. Voy a intentar reiniciarlo.
Guillaume Lebourgeois

Respuestas:

16

(Copiando mi comentario como respuesta, ya que resultó ser la solución; acerté).

Por lo tanto, los trabajos cron se programan en UTC (se Europe/Parisencuentra a una hora de desplazamiento de UTC).

La página del manual de Vixie cron dice:

El demonio usará, si está presente, la definición de / etc / timezone para la zona horaria.

¿Qué hay en /etc/timezone? ¿Ha modificado /etc/timezonemás recientemente que se inició el proceso cron? Has probado

/etc/init.d/cron restart

?

Keith Thompson
fuente
3

Algunas distribuciones como Fedora proporcionan un mecanismo en el que puede configurar CRON_TZ=para anular su zona horaria predeterminada.

Del Fedora man 5 crontab

La variable CRON_TZ especifica la zona horaria específica para la tabla cron. El usuario debe ingresar una hora de acuerdo con la zona horaria especificada en la tabla. El tiempo utilizado para escribir en un archivo de registro se toma de la zona horaria local, donde se ejecuta el demonio.

Algo como esto:

#m  h           d   m   wday    command
CRON_TZ="Europe/Paris"
5   0,6,12,18   *   *   *       /path/to/script.bash
slm
fuente
1

Wikipedia dice

La mayoría de las implementaciones cron simplemente interpretan las entradas crontab en la configuración de zona horaria del sistema en la que se ejecuta el demonio cron. Esto puede ser una fuente de disputa si una máquina multiusuario grande tiene usuarios en varias zonas horarias, especialmente si la zona horaria predeterminada del sistema incluye el horario de verano potencialmente confuso. Por lo tanto, una implementación de cron puede hacer un caso especial de cualquier línea de configuración de variable de entorno "TZ =" en crontabs de usuario, interpretando las entradas de crontab posteriores relativas a esa zona horaria

Entonces, ¿tal vez su ID de inicio de sesión tiene una configuración TZ que difiere de la configuración TZ del sistema?

RedGrittyBrick
fuente
1

Reiniciar cron era lo que necesitaba, pero para mí el comando era

/etc/init.d/crond restart (crond not cron)
arx-e
fuente
0

Acabo de descubrir esto en Ubuntu 14/16. Funcionó perfectamente para mí.

Pasos (sudo implicado):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone
Varun Chandak
fuente
¿Dónde cronse reinicia?
DavidPostill
No necesitaba reiniciar cron.
Varun Chandak