Bonjour,
Je souhaite faire tourner un cron tous les jours toutes les 10 minutes sauf entre 22h et 22h45.
Savez vous comment faire ?
Merci de votre aide
Bonjour,
Je souhaite faire tourner un cron tous les jours toutes les 10 minutes sauf entre 22h et 22h45.
Savez vous comment faire ?
Merci de votre aide
# ne pas le faire dans l'heure est 22
Posté par NeoX . Évalué à 2.
toutes les 10 minutes :
*/10 * * * * user tonscript
toutes les heures sauf l'heure 22 ca devrait le faire avec une syntaxe de ce genre (à verifier avec le mode d'emploi
* 0-21,23 * * * user tonscript
ca te fait quand meme une donnée manquante, celle de 22h50
[^] # Re: ne pas le faire dans l'heure est 22
Posté par MicP . Évalué à 3.
Si la première instruction du script qui est lancé toutes les dix minutes
commence par vérifier que le fichier temoinCronContinue existe,
et si ce fichier n'existe pas, le script s'arrête là.
à 22:00, une autre tâche cron va créer ce fichier temoinCronContinue
=> ce qui va bloquer le script lancé toutes les 10 mn
à 22:45, une autre tâche cron va supprimer le fichier temoinCronContinue
=> ce qui va permettre au script lancé toutes les 10 mn de continuer son travail.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par NeoX . Évalué à 2.
dans ton cas tu geres donc 3 cron
c'est un peu compliqué non ?
la solution en bas est plus elegante.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par arnaudus . Évalué à 2.
Pragmatique et simple peut-être (et encore, c'est buggogène si on merdoie sur les timezones etc), mais élégante, carrément pas. On pourrait imaginer que cron appelle toutes les 10 secondes la totalité des scripts qu'on y met et que chaque script vériie que ça n'est pas l'heure de se lancer…
Personne n'a parlé de mettre toutes les heures sauf celles où il ne veut pas? Ça fait 139 lignes.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par NeoX . Évalué à 3.
139 lignes ? pour faire quoi ?
ca tient en 6 lignes en ecrivant de la sorte
aller 8 lignes si on definit des variables pour les heures de debut et heure de fin (periode de non execution)
10 ou 15 avec les conversions de date courante pour en extraire les heures et les minutes
[^] # Re: ne pas le faire dans l'heure est 22
Posté par guppy . Évalué à 1.
J'imagine qu'il sous entendait écrire une ligne dans la crontab par lancement. Genre :
Si je compte bien ça fait 24 * 6 - 5 = 139.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par arnaudus . Évalué à 2.
Merci, je croyais que c'était clair mais visiblement non :-)
C'est une histoire de partage des tâches. Le script, une fois lancé, doit s'exécuter comme prévu. Le job de cron est de le lancer à certaines heures. Si tu délègues à ton script le choix de s'arrêter si ça n'est pas la bonne heure, alors tu empiètes sur le job de cron, tu crées tout un tas de bugs potentiels. Au final, tu vas rescripter un cron-like sans fonctionnalités et tout buggé. Alors non, je ne trouve pas ça élégant. C'est peut-être pragmatique, ça peut éventuellement marcher, mais c'est crade.
139 lignes dans cron, ça n'est pas simple, ça n'est pas non plus élégant, mais ça a le mérite de ne pas empiéter sur les tâches des différents acteurs.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par NeoX . Évalué à 4.
surtout quand cron te permet de factoriser tout ca dans (j'ai pas testé)
ou si la premiere ligne ne passe pas :
ce qui est quand meme plus efficace que les 139 lignes
[^] # Re: ne pas le faire dans l'heure est 22
Posté par guppy . Évalué à 1.
Tout à fait d'accord sur le principe, mais l'implémentation est mauvaise. Pourquoi tu tiens à l'écrire en 139 lignes alors qu'on peut l'écrire en 2 ?
[^] # Re: ne pas le faire dans l'heure est 22
Posté par arnaudus . Évalué à 2.
Parce que la réponse en 2 lignes n'était pas encore là lors de mon premier post? :-)
[^] # Re: ne pas le faire dans l'heure est 22
Posté par NeoX . Évalué à 2.
solution en 2 ligne posté le 28/02 à 21h33
solution en 139 lignes posté le 01/03 à 09h23
donc non, ce ne doit pas etre pour ca ;)
[^] # Re: ne pas le faire dans l'heure est 22
Posté par arnaudus . Évalué à 2.
Euh, tes deux lignes du 28/02 ne fonctionnent pas (ou alors je n'ai pas compris). J'ai l'impression que tu donnes une piste, mais ça n'est pas une solution. Ce qui fonctionne c'est la solution en deux lignes qui est en dessous.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par NeoX . Évalué à 3.
apprendre à pecher, ou donner du poisson…
je choisis de donner des pistes, plutot que la solution.
[^] # Re: ne pas le faire dans l'heure est 22
Posté par lenod . Évalué à 3.
Surtout, si pour une raison ou pour une autre, ta machine est arrêtée entre 22h et 22h45 et ne redémarre qu'après 22h45, tu perds toute la journée suivante.
# Dans le script
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 10.
Mettre une détection de l'heure dans le script et faire un exit si on est entre 2200 et 2245 ?
La gelée de coings est une chose à ne pas avaler de travers.
[^] # Re: Dans le script
Posté par MicP . Évalué à 1.
Effectivement, c'est bien plus simple de faire un exit dans le script qui va lui même trouver l'heure.
[^] # Re: Dans le script
Posté par Orwell . Évalué à 1.
Ok merci.
Je n'y avait pas pensé.
[^] # Re: Dans le script
Posté par Marc Quinton . Évalué à 3.
3 lignes de cron :
- la première, créé un fichier à 22h:
- la seconde l'efface à la fin (22h45)
- la 3ième effectue la tache, en l’absence du fichier, lancée toutes les 10mn.
# 2 lignes suffisent
Posté par guppy . Évalué à 6.
[^] # Re: 2 lignes suffisent
Posté par Benoît Sibaud (site web personnel) . Évalué à 7.
Pour chipoter, tout le monde a jusqu'ici supposé que la demande concernait toutes les 10 min à partir de 0. En fait, sur la tranche 22h-23H :
En général, on s'en fiche, mais ça peut valoir le coup de faire préciser la demande :).
[^] # Re: 2 lignes suffisent
Posté par guppy . Évalué à 1.
Effectivement. Si l'écart entre les lancement doit être homogène on peut faire ceci :
# changer de moteur de planification
Posté par NeoX . Évalué à 2.
si avec tous les exemples ci-dessus tu n'y arrive pas,
y a aussi la solution de changer de moteur de planification.
ex : nagios/naemon qui n'est pas prevu pour on est d'accord, peut executer un script toute les X minutes (Check_Interval)
il peut avoir des periodes pendant lesquels les checks vont s'executer
avec des trous dedans, ou des options "sauf"
tous les jours de la semaine
sauf mercredi 23h-2330
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.