cron é executado na hora errada

0

Eu tenho um arquivo / etc / crontab. É praticamente o padrão, exceto para as tarefas diárias:

'# m h dom mon dow user  command  
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly  
00 2    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )  
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )  
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Portanto, espero que as tarefas diárias sejam executadas até às 2:00 da manhã. O problema é que são executadas às 7:30 da manhã (por vezes às 8:30 da manhã). Eu verifiquei as configurações de fuso horário e relógio e está tudo bem. O que há de errado com o arquivo crontab?

    
por alvaroc 25.12.2014 / 19:30

1 resposta

0

Com sua configuração, o comando test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) será de fato executado às 2:00, mas os comandos em /etc/cron.daily provavelmente não serão!

Vamos ver o comando mais de perto:

  • O primeiro comando test -x /usr/sbin/anacron verifica se o comando anacron pode ser executado, ele "falha" (retorna 1) se /usr/sbin/anacron não for executável
  • O || significa: Execute o segundo comando em que o primeiro falhar
  • O segundo comando ( cd / && run-parts --report /etc/cron.daily ) executará todas as tarefas no diretório /etc/cron.daily , sem envolver anacron de alguma forma

Em suma: cron só executará as tarefas em /etc/cron.daily se o comando /usr/sbin/anacron não estiver disponível! anacron é um programa independente que tem sua própria heurística para descobrir quando executar uma tarefa.

Para permitir que cron execute tarefas nas horas indicadas em /etc/crontab , apenas desinstale o anacron package ! Modificar o comando /etc/crontab não é uma boa ideia, já que as tarefas em /etc/cron.daily seriam executadas duas vezes por dia: Uma vez por cron e uma vez por anacron .

    
por ntninja 25.12.2014 / 21:06