¿Qué podría causar que un cron se ejecute dos veces al mismo tiempo?

¿Qué podría causar que un cron se ejecute dos veces al mismo tiempo?

Tengo un cron configurado para ejecutarse todos los lunes a la 1 a.m.

0 1 * * 1 /script/dir/script >> /script/dir/file.log

Después de dos años de funcionamiento como se esperaba, se realizó dos veces el 18 de junio, y la segunda convocatoria se produjo entre ½ y 1 segundo después de la primera. ¿Qué podría causar que eso suceda?

No fue ejecutado ni la primera ni la segunda vez por un humano.

El script está asociado con un sitio web pero está fuera de la raíz del documento.

¿Es posible que el reloj se sincronizara en ese mismo momento, obligándolo a retroceder 1 segundo y volviendo a ejecutar el cron a la 1 a.m.?

Respuesta1

Después de todo, podría ser que Jippie tenga algo en mente: si bien el segundo intercalar se insertó el 1 de julio, actualmente hayun error en algunos sistemas de tiempo GPS(lea el hilo completo), lo que hace que los segundos intercalares se anuncien continuamente. En otras palabras, la bandera del segundo intercalar ha sido anunciada desde muchas fuentes horarias de primer nivel, todos los días desde el 30 de junio. Se está solucionando mientras hablamos, consulte nuevamente el hilo de correo de preguntas de NTP. Numerosos sistemas se vieron afectados entre el 31 de julio y el 1 de agosto debido a esto.al igual queel 30 de junio (fallos del kernel de Linux) / 1 de julio (problemas de la CPU de Java).

Lo extraño es que llegó el 18 de junio. ¿Su registro de kernel tenía algún mensaje de "segundo intercalar insertado" aproximadamente al mismo tiempo? ¿Su servidor está actualmente en UTC+1 (BST)? Si ve un mensaje de salto en el registro del kernel, ¿qué versión de ntpd y versión del kernel está ejecutando? En todas las versiones de ntpd con las que me he encontrado, el salto solo se propaga al núcleo el último día del mes, por lo que toda la teoría del segundo intercalar podría ser una pista falsa.

Respuesta2

Mi respuesta a continuación debe serequivocado, Confundí la fecha: el segundo intercalar más reciente se insertó el 30 de junio de 2012 a las 23:59:60 UTC. No el 18 de junio.


El segundo intercalar que se introdujo ese día.

Los segundos bisiestos no son tan predecibles como los años bisiestos, generalmente son causados ​​por grandes terremotos, tsunamis, ... ese tipo de cosas. donde un saltoañoes razonablemente predecible (aproximadamente cada cuatro años), un segundo intercalar esno. Hay una comisión de personas inteligentes (creo que en la ONU) que decide que se debe introducir un segundo intercalar. Esto sólo se puede predecir con unos 60 días de antelación. A muchos sistemas no les gusta que el tiempo pase de...:59 a...:60 antes de pasar a...:00. A las bases de datos no les gusta que el tiempo se retrase un segundo, son muy exigentes con las marcas de tiempo que ocurren solo una vez.

https://en.wikipedia.org/wiki/Leap_segundo#Announcement_of_leap_segundos

Respuesta3

También he recibido un cron de doble ejecución. Dos scripts simultáneos leyendo y eliminando mensajes de error. ¡Seguí volviendo a este hilo para ver si alguien había encontrado algo nuevo!

Pero me acabo de dar cuenta de que era una entrada duplicada de cron. Tenía una entrada en /etc/crontab para ejecutar todos los scripts en /etc/cron. quarter, y tenía una entrada en /etc/cron.d que también llamaba al mismo script al mismo tiempo.

¡No es tan riguroso intelectualmente como depurar problemas de segundos intercalares!

información relacionada