J'utilise Ubuntu 12.04 pour un projet intégré. J'ai besoin de tâches cron pour s'exécuter uniquement à l'heure spécifiée, car le temps peut être avancé (entraînant une tâche manquée), mais ces tâches doivent être ignorées. Pendant le test, même lorsque je place mes crontabs dans /etc/cron.d, et par exemple planifie le travail à 13:15, règle l'heure système à 13:25, le travail s'exécutera à ~ 13: 26. Je ne veux pas exécuter les travaux manqués, ils doivent être ignorés (selon les recherches que j'ai faites, il s'agit d'un comportement cron "normal"). Des suggestions sur la façon de supprimer l'anacron et de simplement garder le vieux cron ordinaire?
Merci.
Je ne vois aucune raison pour laquelle retirer l'anacron serait problématique. La réponse mentionnée par papukaija ne contient aucun avertissement non plus. D'autant plus que les emplois manquants sont exactement ce que vous voulez quand le temps presse.
La description du package dit:
Vous devez installer ce programme si votre système n'est pas sous tension 24h/24 pour vous assurer que les travaux de maintenance des autres paquets Debian sont exécutés chaque jour.
Il suffit donc de le supprimer avec Sudo apt-get remove anacron
(N'utilisez pas purge
pour conserver les fichiers de configuration)
Un problème subsiste (comme vous l'avez remarqué) - cron voit des pas de temps inférieurs à trois heures résultant de quelque chose comme heure d'été et exécute toujours les travaux manqués.
Des considérations particulières existent lorsque l'horloge est modifiée de moins de 3 heures, par exemple au début et à la fin de l'heure d'été. Si le temps a avancé, les travaux qui auraient été exécutés dans le temps ignoré seront exécutés peu de temps après la modification. Inversement, si le temps a reculé de moins de 3 heures, les travaux qui tombent dans le temps répété ne seront pas réexécutés.
Les changements d'horloge de plus de 3 heures sont considérés comme des corrections d'horloge et la nouvelle heure est utilisée immédiatement
Votre solution possible réside dans le fait que seuls les travaux avec temps d'exécution exact sont affectés.
Seuls les travaux qui s'exécutent à un moment particulier (non spécifié comme @hourly, ni avec '*' dans le spécificateur d'heure ou de minute) sont affectés. Les travaux spécifiés avec des caractères génériques sont exécutés immédiatement en fonction de la nouvelle heure.
Donc, si vous voulez exécuter un travail toutes les 3 heures, vous écrirez une ligne comme
25 */3 * * * root /path/so/some/file
Une approche complètement différente (si vous voulez que ces travaux soient exécutés au plus une fois) serait d'utiliser at
.
La désinstallation d'anacron désinstalle également le bureau. En d'autres termes, Ubuntu suppose qu'un système sans anacron est un serveur. Si cela vous pose problème, vous pouvez essayer de supprimer les autorisations d'exécution du binaire anacron:
Sudo chmod a-x /usr/sbin/anacron
Sudo chmod a-x /etc/init.d/anacron
Cela est dû au fait que/etc/crontab vérifie la présence d'anacron en vérifiant si/usr/sbin/anacron est exécutable, et si ce n'est pas le cas, les tâches quotidiennes, hebdomadaires et mensuelles sont exécutées de manière synchrone.