O que poderia fazer com que um cron fosse executado duas vezes ao mesmo tempo?

O que poderia fazer com que um cron fosse executado duas vezes ao mesmo tempo?

Eu tenho um cron configurado para ser executado todas as segundas-feiras à 1h

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

Depois de dois anos funcionando conforme o esperado, foi executado duas vezes em 18 de junho, com a segunda chamada ocorrendo ½ - 1 segundo após a primeira. O que poderia fazer com que isso acontecesse?

Não foi executado nem na primeira nem na segunda vez por um humano.

O script está associado a um site, mas está fora da raiz do documento.

É possível que o relógio tenha sido sincronizado naquele mesmo momento, forçando-o a retroceder 1 segundo e executando novamente o cron à 1h?

Responder1

Afinal, pode ser que o jippie esteja no caminho certo: embora o segundo bissexto tenha sido realmente inserido em 1º de julho, atualmente háum bug em alguns sistemas de tempo GPS(leia o tópico completo), que faz com que os segundos bissextos sejam anunciados continuamente. Em outras palavras, a bandeira do segundo bissexto foi anunciada por muitas fontes de tempo de alto nível, todos os dias desde 30 de junho. Está sendo consertado enquanto falamos, novamente refira o tópico de e-mail de perguntas do NTP. Vários sistemas foram atingidos em 31 de julho/1º de agosto devido a isso,Assim comoem 30 de junho (falhas no kernel do Linux) / 1º de julho (problemas de CPU Java).

O estranho é que aconteceu no dia 18 de junho. O log do seu kernel apresentou alguma mensagem "Segundo bissexto inserido" na mesma época? O seu servidor está atualmente em UTC+1 (BST)? Se você vir uma mensagem de salto no log do kernel, qual versão do NTPD e versão do kernel você está executando? Em todas as versões do NTPD que encontrei, o salto só é propagado para o kernel no último dia do mês, então toda a teoria do segundo bissexto pode ser uma pista falsa aqui.

Responder2

Minha resposta abaixo deve sererrado, confundi a data: o segundo bissexto mais recente foi inserido em 30 de junho de 2012 às 23:59:60 UTC. Não 18 de junho.


O segundo bissexto que foi introduzido naquele dia.

Os segundos bissextos não são tão previsíveis quanto os anos bissextos, geralmente são causados ​​por grandes terremotos, tsunamis, ... esse tipo de coisa. Onde um saltoanoé razoavelmente previsível (a cada quatro anos), um segundo bissexto énão. Há uma comissão de pessoas inteligentes (acredito que na ONU) que decide que deveria ser introduzido um segundo bissexto. Isso só pode ser previsto com cerca de 60 dias de antecedência. Muitos sistemas não gostam que o tempo passe de ...:59 a ...:60 antes de ir para ...:00. Os bancos de dados não gostam de atrasar um segundo, eles são muito exigentes quanto aos carimbos de data e hora que ocorrem apenas uma vez.

https://en.wikipedia.org/wiki/Leap_second#Announcement_of_leap_seconds

Responder3

Também tenho recebido um cron de execução dupla. Dois scripts simultâneos lendo e excluindo mensagens de erro. Continuei voltando a este tópico para ver se alguém havia encontrado algo novo!

Mas acabei de perceber que era uma entrada dupla do cron. Eu tinha uma entrada em /etc/crontab para executar todos os scripts em /etc/cron.quarter e uma entrada em /etc/cron.d também chamando o mesmo script ao mesmo tempo.

Não é tão rigoroso intelectualmente quanto depurar problemas de segundos bissextos!

informação relacionada