119 votes

Travaux Cron et heures aléatoires, dans des heures données

Je dois pouvoir exécuter un script 20 fois par jour à des heures complètement aléatoires. Je veux également qu'il ne s'exécute qu'entre 9 h et 23 h.

Je suis familier avec la création de tâches cron sous linux.

2 votes

La question n'est pas très bien posée. En fin de compte, vous voulez distribuer 20 points sur l'axe du temps entre 9 heures et 11 heures. Mais existe-t-il des contraintes sur la différence de temps minimale ? Ne rien faire entre 9h et 10h30 est-il acceptable ? La seule façon d'y parvenir de manière acceptable semble être l'idée de Klaus : sélectionnez vos 20 heures à 09:00, ce qui vous permet de respecter toutes les contraintes que vous pourriez avoir, puis programmez les choses avec "à".

0voto

Ganesh Krishnan Points 734

Pour ceux qui ont cherché sur Google le chemin jusqu'ici :

Si vous utilisez anacron (Ubuntu desktop et laptop) alors vous pouvez éditer

/etc/anacrontab

et ajouter

RANDOM_DELAY=XX 

Où XX est le nombre de minutes que vous voulez retarder le travail de base.

Anacron est comme cron, mais il ne s'attend pas à ce que votre ordinateur soit allumé 24 heures sur 24, 7 jours sur 7 (comme nos ordinateurs portables) et il exécutera les scripts qu'il a manqués parce que le système était en panne.

0voto

mellofellow Points 37

Pourquoi ne pas créer un script qui réécrit la crontab tous les jours ?

  1. Lire les crons actuels (A)
  2. Choisir des moments aléatoires (B)
  3. Réécriture de crons antérieurs (A), ajout de nouveaux crons aléatoires (B)
  4. Assurez-vous d'ajouter au cron d'exécuter ce script en premier lieu.

2 votes

Ne contournez pas le système de réputation en postant des commentaires comme réponses. Votre commentaire a cependant l'air suffisamment bien pour que être une réponse. Je recommande de supprimer " Je n'ai pas de représentant pour ajouter un commentaire, mais ".

1 votes

Je viens de revoir cette réponse et j'ai manqué la partie où vous posez une question en retour à la fin (travail bâclé de ma part). Ne posez pas de questions dans les réponses. Postez votre propre question pour les questions que vous avez. J'ai transformé votre semi-question en quelque chose qui pourrait passer pour une réponse.

1 votes

Je l'ai eu ! Merci. Je ferai plus attention la prochaine fois, je ne voulais pas faire de mal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X