Disons que j'ai plusieurs scripts cron qui doivent être exécutés toutes les 15 minutes. Je pouvais les mettre à courir:, */15 * * * *
mais alors ils courent tous en même temps. Il semble stupide que le serveur reste inactif pendant plusieurs minutes, puis essaie soudainement d'exécuter une douzaine de scripts en même temps.
Existe-t-il un moyen de faire exécuter un script à la minute 1, 16, 31, 46 et un autre à 2, 17, 32, 47?
En d'autres termes, je veux que chaque script s'exécute toutes les 15 minutes, mais je m'en fous qu'ils s'exécutent spécifiquement au quart d'heure.
run-parts
est également présent dans les systèmes Fedora / Red Hat.La façon la plus simple de procéder consiste simplement à configurer manuellement les commandes à exécuter lorsque vous le souhaitez:
Ou vous pouvez écrire un script pour générer automatiquement les entrées crontab appropriées (qui évitent les fautes de frappe).
Certaines versions de cron (incluant probablement celle que vous utilisez) acceptent une syntaxe étendue:
la source
Cron n'est pas vraiment bon dans ce que vous essayez de faire. Avez-vous envisagé d'écrire un script qui agit comme un démon qui dort en principe 15 minutes, exécute la commande, puis boucle?
la source
sleep 300
entre chaque exécution de la commande, la propre exécution de la commande entraînera une dérive du temps; il peut s'exécuter tous les 15h10 plutôt que tous les 15h00. Et si le processus d'arrière-plan meurt ou que le système redémarre, contrairement àcrond
, il ne redémarrera pas automatiquement. Il existe des moyens de "démoniser" un processus d'arrière-plan, mais vous êtes à peu près en train de réimplémentercrond
.run-parts
fourni avec la plupart des installations cron pour le faire spécifiquement. Voir la réponse de @ AndrewSchulman.De nombreuses distributions ont /etc/cron.d/cronhourly, pour laquelle tous les scripts dans sont exécutés toutes les heures. Vous pouvez même spécifier l'ordre en les commençant par des numéros séquentiels, comme 01scriptA 02scriptB - cela devrait être trivial avec les connaissances cron que vous avez déjà pour fabriquer un "cronhourlybyfour" comme nous l'appelons sur la base de distribution Linux de Smoothwall :)
Un mot d'avertissement: cela utilise des run-parts comme suggéré précédemment, et run-parts n'aime pas les scripts avec a. dans le nom, alors ne l'appelez pas "deletehomefolders.sh" appelez-le "01deletehomefolders" et assurez-vous de commencer par le bon #! ligne pour tout ce que vous avez l'intention d'interpréter votre script.
la source