Sincronização de horário e tarefas agendadas

4

Se o NTP for executado às 10:59:55 e fixar o horário às 11:00:13, será que as tarefas 11:00:00 e *: 00: 00 serão executadas ou serão ignoradas?

Como alternativa, se o NTP for executado às 11:00:00 e corrigir o tempo para 10:59:48, essas tarefas serão executadas duas vezes?

Se eles forem ignorados, quais métodos são usados para corrigir isso?

E os outros agendadores (windows, etc)?

-Adam

    
por Adam Davis 08.05.2009 / 21:19

5 respostas

9

se você executar um daemon NTP você não terá este problema, ele irá acelerar / desacelerar seu relógio para que ele seja sincronizado com o tempo, em vez de saltar.

    
por 08.05.2009 / 21:22
2

Pelo que entendi, os trabalhos agendados não devem ser ignorados ou executados duas vezes.

O Cron usa uma lista de eventos para seu agendamento, então se o tempo pular adiante, o cron simplesmente verá que o trabalho não foi executado no prazo e será executado durante o próximo ciclo de vigília. Se o tempo voltar, o trabalho será removido da lista de eventos e o cron não o verá precisando ser executado novamente.

Como o Tjofras mencionou, o ntpd irá gradualmente ajustar o seu relógio usando o drift ao invés de um hard jump, então você normalmente não deve ver saltos no tempo, a menos que você mesmo altere manualmente o clock do sistema.

    
por 08.05.2009 / 21:30
2

Isso depende do que você entende por NTP. Se você estiver executando o daemon de sincronização de tempo do NTP (ntpd) com uma configuração razoável, o tempo nunca irá saltar. O daemon rotaciona continuamente a hora do sistema em direção ao tempo real. Ele não "roda" em intervalos: ele consulta suas fontes de tempo em intervalos, simplesmente para determinar quanto tempo deve ser gasto. Você nunca verá um tempo ignorado, nem seu tempo retrocederá de qualquer maneira detectável.

O tempo vai saltar, no entanto, se você estiver sincronizando através de outros meios. Por exemplo, se você usar um cron job para executar ntpdate ou ntpd -q (o que você não deve fazer a menos que você tenha um bom motivo e entenda as possíveis consequências), o tempo do seu sistema pode mudar instantaneamente tempo isso é executado. A hora também pode pular quando você inicia o ntpd, dependendo de como você o configurou.

Em relação ao Cron:

Se a hora exata em que um cron job deveria rodar não ocorre (é pulada) devido a um salto de tempo, simplesmente não será executada. Ele será executado no próximo intervalo para o qual está programado.

Se a hora exata em que uma tarefa do cron deveria rodar ocorrer duas vezes (o tempo salta para trás), ela será executada nas duas vezes.

Para resolver o problema do cron, execute o ntpd como um serviço / daemon, garantindo assim que o seu tempo nunca irá saltar. Se você pular manualmente o tempo, você terá que verificar todos os seus trabalhos agendados para determinar o que não foi executado (ou será executado duas vezes) e intervir manualmente.

Naturalmente, a melhor solução é resolver o problema do tempo. O problema do cron é simplesmente um sintoma do problema de salto de tempo muito mais sério, que pode causar todos os tipos de problemas além do cron (registro, auditoria, SELinux, etc ...)

    
por 04.06.2009 / 17:47
1

Eu vi os trabalhos do Backup Exec no Windows dispararem se o tempo for alterado. Eles não gostam quando o tempo volta uma hora.

    
por 08.05.2009 / 21:46
1

Como outros já mencionaram, rodar o ntpd irá prevenir este problema, mas se você tiver problemas devido ao tempo ignorando, você pode usar o anacron. Ele foi projetado para uso quando um computador não está funcionando 24 horas por dia, sete dias por semana, e para executar trabalhos o mais rápido possível, mas não vejo por que ele não funcionaria na situação que você descreveu.

    
por 04.06.2009 / 18:22