Le planificateur de tâches cron est-il vraiment précis?
Je veux dire, j'ai besoin d'un script pour exécuter tous les soirs le plus tard possible, MAIS avant 00h00 du lendemain.
Idéalement, j'exécuterais une tâche cron à 23 h 59 (ou 23 h 59), mais le système sera-t-il vraiment précis? Puisqu'une seconde compte, dois-je régler le cron job à 23:58 pour le laisser un peu de temps?
Réponses:
Ce que cron peut garantir, c'est que votre travail commencera au plus tôt à l'heure spécifiée (sous réserve de la précision de l'horloge système). Mais il n'y a aucun moyen de vous donner une garantie quant à l'heure de fin de l'emploi. Cela dépendra de nombreux facteurs:
Ma recommandation est de changer votre conception de telle sorte qu'un temps d'achèvement spécifique ne soit pas une exigence.
la source
O_CREAT
etO_EXCL
flags, il sera atomique tant que le fichier se trouve sur un système de fichiers local.Je suppose que cela dépend de votre démon cron, mais la documentation et la norme indiquent que si vous spécifiez des minutes, le travail s'exécutera à la minute spécifiée.
Voir:
Sachez que votre script sera démarré lorsque l'horloge passera à l'heure correcte, mais se terminera quelque temps après.
la source
Habituellement, cron démarre à 23:59:00 , analyse tous vos fichiers crontab, filtre ceux qui sont pertinents pour 23:59 puis les démarre. La numérisation de ces fichiers est très rapide, car ils ne sont pas nombreux et ne comportent que quelques lignes. Donc, généralement, les tâches cron commencent à 23:59:00 ou 23:59:01 Il existe des moyens sûrs de ralentir intentionnellement ce processus. (ajoutez des millions de lignes à la crontab, par exemple). Si le système est totalement surchargé, cela ne fonctionnera pas aussi vite.
De plus, cela dépend évidemment de l'implémentation.
Si vous avez besoin d'heures de démarrage très précises, il vaut mieux créer un programme qui dort jusqu'à l'heure souhaitée, puis s'exécute (par exemple en utilisant c ++ 11 ). Mais sur un OS non temps réel, cela ne sera pas exact non plus! De plus, l'horloge du PC ne connaît pas l'heure exacte!
Dans tous les cas, cela garantit uniquement que le programme démarre (plus ou moins) à l'heure souhaitée. Il ne peut y avoir aucune garantie que le programme se termine avec succès jusqu'à un moment donné, donc je crois fermement que vous devriez changer quelque chose sur cette exigence.
la source
Cela dépend de votre temps d'exécution global du script et de la précision de l'heure du serveur.
lancera votre script exactement à 23h59, mais, si vous avez des commandes qui fonctionnent longtemps, une partie du script peut être exécutée après minuit.
la source