Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/05/2022, à 11:07

OOfanch

Fréquence crontab

Bonjour,
Je voudrai lancer un cron toutes les 12h25 (période de la marée). Je sais le faire à des heures fixes mais la je ne vois pas comment faire.
Est-ce que vous auriez un idée?
Merci de votre aide,
François

Hors ligne

#2 Le 02/05/2022, à 11:18

erresse

Re : Fréquence crontab

Bonjour,
Tu pourrais essayer de donner la période en minutes : */745 (=12h25) en premier paramètre.
Sous toute réserve, je ne sais pas si ça peut marcher, mais ça ne coûte rien de faire l'essai...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 02/05/2022, à 11:59

bruno

Re : Fréquence crontab

Bonjour,

Je ne pense pas que l'idée d'eresse fonctionne car le champ des minutes n'accepte en principe que des valeurs de 0 à 59

J'ai beau chercher je ne vois pas comment faire cela uniquement avec cron. À mon avis il faut passer par un script qui vérifie sa dernière date d'exécution.

Sinon, c'est possible avec un timer systemd puisque là tu peux spécifier les délais comme tu veux.

#4 Le 02/05/2022, à 12:20

credenhill

Re : Fréquence crontab

hello
sans cron, le script peut se relancer

...
# à la fin
at -f script now+745 min 

Dernière modification par credenhill (Le 02/05/2022, à 12:20)

Hors ligne

#5 Le 02/05/2022, à 17:59

erresse

Re : Fréquence crontab

bruno a écrit :

Je ne pense pas que l'idée d'eresse fonctionne car le champ des minutes n'accepte en principe que des valeurs de 0 à 59

J'ai lancé un essai mais je n'en ai pas encore le résultat, donc je ne peux rien affirmer, mais dans ce cas, il ne s'agit pas d'indiquer une minute précise (comprise entre 0 et 59), mais un nombre de minutes. Je pense que ça peut être accepté...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#6 Le 02/05/2022, à 18:10

Watael

Re : Fréquence crontab

salut,

man 5 crontab a écrit :

The time and date fields are:

       field          allowed values
       -----          --------------
       minute         0-59

ensuite,

lancer un cron toutes les 12h25

à partir de quand ?
cron démarre en même temps que la machine, pas en fonction de la Nouvelle Lune. lol


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 02/05/2022, à 21:56

OOfanch

Re : Fréquence crontab

A partir d'une heure de marée basse à Brest.

Hors ligne

#8 Le 02/05/2022, à 22:04

iznobe

Re : Fréquence crontab

Bonjour , il vaudrait mieux calculer les heures des marées en fonction des jours dans un autre script , qui apelle lorsque c' est la bonne heure correspondante au jour , le script en question du coup , enfin c' est mon avis , sinon je ne vois pas d' autre possibilité pour que ce soit effectivement fiable .
2eme possibilité recupere les heures de marée basse de brest sur un site qui les donne et enclencher au bon moment , mais ca revient pratiquement au meme sauf que c ' est certainement plus compliqué en fait , plus de chose a gerer dans le script .

Il faut evidemment laissé tomber cron , il ne peut pas s ' adapter sur une heure precise , il ne gere que des intervalles de temps .

Dernière modification par iznobe (Le 02/05/2022, à 22:13)


retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#9 Le 02/05/2022, à 22:06

Watael

Re : Fréquence crontab

même problème : ça n'entre pas dans les paramètres de cron.

--
« ben, oui ! "Zézette épouse X", ça n'entre pas dans les cases. »

Dernière modification par Watael (Le 02/05/2022, à 22:07)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 03/05/2022, à 06:26

bruno

Re : Fréquence crontab

iznobe a écrit :

Il faut evidemment laissé tomber cron , il ne peut pas s ' adapter sur une heure precise , il ne gere que des intervalles de temps .

Euh… c'est exactement l'inverse. cron est conçu pour exécuter des tâches à des dates et heures précises et non à des intervalles de temps paramétrables (cf man5 crontab).

--

De toute façon le problème est biaisé dès le départ puisque les marées ne se produisent pas à intervalles réguliers. Il suffit de regarder l’intervalle entre deux pleines mers par exemple ici : https://maree.info/82. On voit bien que ce n'est pas une constante. D'ailleurs le calcul des marées est assez complexe.

Je ne sais pas ce que veux faire OOfanch mais les tâches planifiées (cron ou timer systemd) ne sont clairement pas adaptées à la gestion de ce type d'information.

#11 Le 03/05/2022, à 06:32

Tawal

Re : Fréquence crontab

Hello,

"De toute façon le problème est biaisé dès le départ puisque les marées ne se produisent pas à intervalles réguliers."

C'est ce que j'allais dire,l'intervalle de 12h25 entre marées est une moyenne.
Donc un décalage se ferait voir assez vite, pour au final tomber complètement à coté !


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#12 Le 03/05/2022, à 07:13

iznobe

Re : Fréquence crontab

Bonjour , il est possible , via cron de lancer une tache toutes les 12 h et 25 min en faisant comme cela :

*/25 */12 * * *     /mon_script

.
Cependant ca ne sera evidemment pas calé sur les heures de marée puis que le " compteur de temps " demarre au boot de l' ordinateur .
Avec cron , on peut utiliser des heures fixes evidemment ( je me suis mal exprimé dans mon message precedent roll ) , ou un systeme d ' intervalle de temps regulier , mais on ne peut pas combiner les 2 , ou alors je ne sais pas faire .

De plus si on reboot l' ordi , l ' intervalle de temps est reset , le compteur de temps est reset  , donc forcement plus rien ne va .

Dernière modification par iznobe (Le 03/05/2022, à 07:18)


retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#13 Le 03/05/2022, à 07:41

bruno

Re : Fréquence crontab

@iznobe as-tu testé ? Ce que tu proposes exécutera le script toutes le douze heures à la 25ème minute (0h25 et 12h25 par exemple) et non pas toutes les 12h et 25 minutes.
Et j'insiste cron ne permet pas de définir un intervalle de temps entre deux tâches mais uniquement des dates et heures d'exécution :

man 5 crontab a écrit :

Commands  are executed by cron when the minute, hour, and month of year fields match the current time, and when at least one of the
       two day fields (day of month, or day of week) match the current time

#14 Le 03/05/2022, à 07:48

iznobe

Re : Fréquence crontab

@bruno , j ' avais justement un doute pour les 12 heures et 25 min , je n' ai pas testé .

bruno a écrit :

Et j'insiste cron ne permet pas de définir un intervalle de temps entre deux tâches mais uniquement des dates et heures d'exécution.

Ba je sais pas , mais moi , si j' ecris

*/5 * * * *     /mon_script

et que mon_script s ' execute toute les 5 minutes , j ' apelle ca un intervalle de temps et pas une heure fixe . peut etre que ce n' est pas le bon mot " intervalle " , mais naturellement , il ne m' en vient pas d' autre .

Apres je concois bien , que cron calcule une heure  fixe en faisant heure execution precedente + 5 min , donc execution de mon_script a H + 5 pour la prochaine execution , mais coté humain , mon_script va s ' executer a un intervalle de temps regulier .

Dernière modification par iznobe (Le 03/05/2022, à 07:55)


retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#15 Le 03/05/2022, à 08:00

bruno

Re : Fréquence crontab

C'est ton interprétation, et même si le résultat est effectivement une exécution toutes les 5 minutes, elle est fausse.
L'interprétation correcte de la syntaxe de crontab (telle qu'expliquée dan le man) est que script s'exécute à date et heures fixes aux minutes 0,5,10, etc. de chaque heure, chaque jour du mois, chaque mois de l'année et chaque jour de la semaine.
Rien dans cron ne permet de définir un intervalle de temps entre deux exécutions et toutes les documentations officielles expliquent bien que les tâches s'exécutent à un moment précis défini dans les champs du crontab.

Note bien que si c'était possible il n'y aurait aucune difficulté à avoir une tâche cron toutes les 75 secondes ou toutes les 85 minutes par exemple.

Dernière modification par bruno (Le 03/05/2022, à 08:04)

#16 Le 03/05/2022, à 08:24

OOfanch

Re : Fréquence crontab

bruno a écrit :
iznobe a écrit :

Il faut evidemment laissé tomber cron , il ne peut pas s ' adapter sur une heure precise , il ne gere que des intervalles de temps .

Euh… c'est exactement l'inverse. cron est conçu pour exécuter des tâches à des dates et heures précises et non à des intervalles de temps paramétrables (cf man5 crontab).

--

De toute façon le problème est biaisé dès le départ puisque les marées ne se produisent pas à intervalles réguliers. Il suffit de regarder l’intervalle entre deux pleines mers par exemple ici : https://maree.info/82. On voit bien que ce n'est pas une constante. D'ailleurs le calcul des marées est assez complexe.

Je ne sais pas ce que veux faire OOfanch mais les tâches planifiées (cron ou timer systemd) ne sont clairement pas adaptées à la gestion de ce type d'information.


En effet les marées ne se produisent pas à des temps réguliers, c'était une première approche simplifiée pour avoir un résultat rapide.
L'objectif est d'afficher sur une page web le coefficient du moment.

J'ai copié à la main dans un csv les données du site: http://maree.info/82
J'avais dans une première approche conservé que les dates et les coeffs
26/04/2022      54      60
27/04/2022      66      71
28/04/2022      76      80
29/04/2022      84      86
30/04/2022      87      88


Je lis dans le csv les coefficient. Je pourrais rajouter dans ce csv les heures des marées correspondants aux coeffs. Rajouter dans mon script l'heure de la prochaine marée, calculer le nombre de minutes correspondant et faire ce que proposait credenhill:


credenhill a écrit :

hello
sans cron, le script peut se relancer

...
# à la fin
at -f script now+745 min 

ça vous parait adapté?
Merci en tous cas pour votre aide.
François

Dernière modification par OOfanch (Le 03/05/2022, à 08:48)

Hors ligne

#17 Le 03/05/2022, à 08:55

bruno

Re : Fréquence crontab

L'objectif est d'afficher sur une page web le coefficient du moment.

https://maree.shom.fr/vignette

#18 Le 03/05/2022, à 10:01

OOfanch

Re : Fréquence crontab

Il y a cette possibilité mais je ne gère pas le site web, il est déjà construit.
Je dois envoyer des fichiers csv sur un site ftp. Ces fichiers sont ensuite lus (je n'ai pas la main sur cette partie) et affichés sur le site.

Hors ligne

#19 Le 03/05/2022, à 13:16

diesel

Re : Fréquence crontab

Comme début de solution, je peux te proposer ça

w3m https://marine.meteoconsult.fr/meteo-marine/horaires-des-marees/brest-4/mai-2022 >toto.txt

Dans le fichier toto.txt, tu vas retrouver ça :

...
mardi 3
Marée basse 01h23 1.50m
Marée haute 07h15 6.60m
81
Marée basse 13h35 1.65m
Marée haute 19h26 6.60m
78
Lune
Premier croissant de lune
Saint
Saint Philippe
Lever 06h55
14h39min
+3 min
Coucher 21h34
...

Avec un petit script, on peut trier...

Bon, c'est vrai, je n'ai pas utilisé cron...

Amicalement.

Jean-Marie

Dernière modification par diesel (Le 03/05/2022, à 13:26)


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#20 Le 03/05/2022, à 14:22

Watael

Re : Fréquence crontab

OOfanch a écrit :

Je lis dans le csv les coefficient. Je pourrais rajouter dans ce csv les heures des marées correspondants aux coeffs. Rajouter dans mon script l'heure de la prochaine marée, calculer le nombre de minutes correspondant et faire ce que proposait credenhill:


credenhill a écrit :

hello
sans cron, le script peut se relancer

...
# à la fin
at -f script now+745 min 

ça vous parait adapté?

non, puisque tu dois envoyer un fichier csv qui contient (d'après ce que tu nous montres) 5 jours de prévisions, il faut envoyer une mise à jour, à la même fréquence que tu collectes les informations, à minuit.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#21 Le 03/05/2022, à 15:22

erresse

Re : Fréquence crontab

En-dehors de toute considération d'horaires des marées (ce n'était pas pour moi le point à vérifier), cet essai lancé hier :

*/70 * * * * XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/echo "coucou" >> /home/user/Bureau/trace 2>&1

a parfaitement fonctionné et la commande s'est bien exécutée X fois, toutes les 1h10min.
Je suis donc en mesure de confirmer après test que la valeur que l'on peut indiquer pour un délai de répétition (un nombre de minutes  en l'occurrence) n'est absolument pas cantonnée à une plage de 0-59.
CQFD


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#22 Le 03/05/2022, à 15:33

bruno

Re : Fréquence crontab

Ah ben ça alors !
Ce ne serait pas la première fois que le comportement d'une application est en contradiction avec sa page de man (cf. #6), mais si cela fonctionne réellement je suis sur le cul !

EDIT :
Bon j'ai testé aussi avec */70 et cela ne fonctionne pas. Cela ne provoque pas d'erreur mais la tâche est exécutée toutes les heures et non toutes les 1 heure et 10 minutes.
J'aurai été très étonné que cela fonctionne sans être documenté nulle part.

Dernière modification par bruno (Le 03/05/2022, à 19:14)

#23 Le 03/05/2022, à 15:37

OOfanch

Re : Fréquence crontab

diesel a écrit :

Comme début de solution, je peux te proposer ça

w3m https://marine.meteoconsult.fr/meteo-marine/horaires-des-marees/brest-4/mai-2022 >toto.txt

Dans le fichier toto.txt, tu vas retrouver ça :

...
mardi 3
Marée basse 01h23 1.50m
Marée haute 07h15 6.60m
81
Marée basse 13h35 1.65m
Marée haute 19h26 6.60m
78
Lune
Premier croissant de lune
Saint
Saint Philippe
Lever 06h55
14h39min
+3 min
Coucher 21h34
...

Avec un petit script, on peut trier...

Bon, c'est vrai, je n'ai pas utilisé cron...

Amicalement.

Jean-Marie

J'ai déjà stocké les coeffs à la main dans un csv pour l'année, donc je n'ai pas vraiment besoin de cette partie de récupération de la donnée.
Mais merci beaucoup pour cette commande que je ne connaissais pas et qui me servira.
Et effectivement je pourrai baser mon code sur cette lecture afin d'éviter de récupérer les données à la main à l'avenir.
Merci!

Hors ligne

#24 Le 03/05/2022, à 15:40

OOfanch

Re : Fréquence crontab

Watael a écrit :

non, puisque tu dois envoyer un fichier csv qui contient (d'après ce que tu nous montres) 5 jours de prévisions, il faut envoyer une mise à jour, à la même fréquence que tu collectes les informations, à minuit.

Pardon ce n'était peut-être pas très clair, j'ai enregistré les données de l'année dans un csv mais je n'envoie les coefficient que un par un.

Hors ligne

#25 Le 03/05/2022, à 15:42

OOfanch

Re : Fréquence crontab

erresse a écrit :

En-dehors de toute considération d'horaires des marées (ce n'était pas pour moi le point à vérifier), cet essai lancé hier :

*/70 * * * * XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/echo "coucou" >> /home/user/Bureau/trace 2>&1

a parfaitement fonctionné et la commande s'est bien exécutée X fois, toutes les 1h10min.
Je suis donc en mesure de confirmer après test que la valeur que l'on peut indiquer pour un délai de répétition (un nombre de minutes  en l'occurrence) n'est absolument pas cantonnée à une plage de 0-59.
CQFD

Merci pour le test ! smile

Hors ligne