Los trabajos de Cron se ejecutan 1 hora, en total desacuerdo con los tiempos del sistema

9

Ejemplo de problema:

* 9 * * * echo 9
* 10 * * * echo 10

Lo anterior enviará un correo electrónico al usuario cada minuto, pero todas las respuestas "9" sucederán a las 10:00 AM -> 10:59 AM, mientras que las "10" vendrán a las 11:00 AM-> 11:59 AM .

Ejecutando un trabajo de

* * * * * /bin/date ; /bin/date -u

Devolvió la fecha y hora esperadas (correctas). Esto fue cierto tanto para UTC como para la hora local (América / Denver). Cambiar este trabajo para que se ejecute cada minuto a una hora específica da como resultado el desplazamiento (los trabajos se les dice que se ejecuten a las 9 a las 10, etc., etc.).

Depuración actual que he completado:

De acuerdo, eso es extraño. ¿Tal vez mi archivo de zona horaria está de alguna manera desordenado? Vamos a comprobar eso

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

He comprobado el reloj del hardware para ver si está apagado o de alguna manera no está de acuerdo con mi configuración local (ejecutar como root).

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

Parece estar apagado por un segundo, pero eso no debería hacer que mis trabajos cron se ejecuten fuera de una hora, ¿verdad?

También estoy seguro de lo siguiente:

  • ¿Ha cambiado mi zona horaria recientemente? No
  • ¿Intentó arreglar manualmente la zona horaria de todos modos? si
  • ¿Reajustó cron después de arreglar la zona horaria? si
  • ¿Me he asegurado de que se reinició el servicio cron? si
  • ¿He reiniciado el servicio cron? si
  • ¿Estás realmente seguro de que se reinició cron? 100% seguro de que Cron se ha reiniciado

Otra información potencialmente relevante:

Ejecutando Debian.

cat /etc/debian_version
8.6

Kernel actual

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

Depuración actualizada:

Ejecutó 'hwclock --systohc', sin cambios notables en el comportamiento. Ejecuté este comando para verificar

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

No puedo ejecutar 'cat / etc / sysconfig / clock' ya que este archivo no existe. Ejecutar un comando de búsqueda debajo del árbol / etc / para encontrar 'reloj' confirma que no tengo ningún archivo con ese nombre allí.

Comprobado para ver si hay algo que yo sepa ha establecido la variable CRON_TZ. No se establece a nivel de usuario, ni a nivel raíz. Tener cron echo fuera no da salida.

jmurrayufo
fuente
1
¿Está el CRON_TZentorno var establecido en alguna parte?
thrig
prueba hwclock --systohcsolo para completar y agregar cat /etc/sysconfig/clocka la pregunta?
Steve
Agregué ambas sugerencias a mi información, lamentablemente ninguna proporcionó mucho valor. CRON_TZ no está configurado en ningún entorno que pueda ver, volver a sincronizar el hwclock dio los mismos resultados que antes (comprobado de todos modos para ver si cambió, no lo hizo) y no tengo un '/ etc / sysconfig / clock ' archivo.
jmurrayufo

Respuestas:

1

Un lugar más para buscar: las secuencias de comandos de inicio al inicio crono el archivo crontab del sistema de la vieja escuela /etc/crontab. Es posible que la variable de entorno TZ se establezca, por ejemplo, /etc/init.d/cronieo /lib/systemd/system/crond.serviceno estoy seguro de lo que Debian usa para el sistema init.

He visto algo así cuando intenté crondejecutar cosas cada dos horas:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondejecutó el script en horas impares. Sospeché, pero nunca me demostré a mí mismo, que tenía que ver con una confusión de horario de verano.

Bruce Ediger
fuente
/etc/init.d/cron está agarrando el /etc/timezonearchivo. TZ = cat /etc/timezone. Ese archivo parece ser correcto (ejecutó una suma de verificación solo para asegurarse de que sea idéntico a lo que debería ser). /lib/systemd/system/crond.service no parece querer modificar ninguna variable TZ. Voy a verificar la sugerencia * / 2 para ver si estoy viendo lo mismo.
jmurrayufo