O agendador de tarefas cron é realmente preciso?
Quero dizer, preciso de um script para executar todas as noites o mais recente possível, mas antes das 00:00 do dia seguinte.
Idealmente, eu executaria um trabalho cron às 23.59 (ou 23:59), mas o sistema será realmente preciso? Como um segundo importa, devo definir o trabalho cron como 23:58 para deixar algum tempo?
Respostas:
O que o cron pode garantir é que seu trabalho seja iniciado antes da hora especificada (sujeito à precisão do relógio do sistema). Mas não há como garantir o tempo de término do trabalho. Vai depender de muitos fatores:
Minha recomendação é alterar seu design para que um tempo de conclusão específico não seja um requisito.
fonte
O_CREAT
eO_EXCL
sinalizar, será atómico desde que o ficheiro esteja num sistema de ficheiros local.Suponho que isso depende do seu daemon cron, mas a documentação e o padrão indicam que, se você especificar minutos, o trabalho será executado no minuto especificado.
Vejo:
Esteja ciente de que seu script será iniciado quando o relógio passar para a hora correta, mas terminará algum tempo depois disso.
fonte
Geralmente, o cron inicia às 23:59:00 , verifica todos os seus arquivos crontab, filtra aqueles que são relevantes para 23:59 e os inicia. A verificação desses arquivos é muito rápida, porque não existem muitos e todos incluem apenas algumas linhas. Geralmente, os cronjobs iniciam às 23:59:00 ou 23:59:01 Há maneiras de retardar intencionalmente esse processo. (adicione milhões de linhas ao crontab, por exemplo). Se o sistema estiver totalmente sobrecarregado, isso também não funcionará tão rápido.
Além disso, isso obviamente depende da implementação.
Se você precisar de horários de início muito exatos, é melhor criar um programa que dorme até o tempo que você deseja e depois execute (por exemplo, usando o c ++ 11 ). Mas em um sistema operacional não em tempo real, isso também não será exato! Além disso, o relógio do PC não sabe a hora exata!
Em todos os casos, isso garante apenas que o programa inicie na (mais ou menos) hora que você deseja. Não pode haver garantia de que o programa termine com êxito até um determinado período, por isso acredito firmemente que você deve alterar algo nesse requisito.
fonte
Depende do tempo de execução geral do script e da precisão do tempo do servidor.
iniciará seu script exatamente às 23:59, mas, se você tiver alguns comandos que funcionem por muito tempo, parte do script poderá ser executada após a meia-noite.
fonte