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.
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
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.
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 ...)
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.
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.
Tags time ntp synchronization