cerhu > comp.os.* > comp.os.linux.configuration

John (02/06/2005, 23h19)
Bonjour,

Je cherche à planifier un cron, une fois toutes les 3 semaines.

Comment faire ?

Merci
TiChou (03/06/2005, 00h13)
Dans le message <news:429f7856$0$3867$626a14ce>,
*dom* tapota sur f.c.o.l.configuration :

> Bonjour,


Bonsoir,

> Je cherche à planifier un cron, une fois toutes les 3 semaines.


> Comment faire ?


On ne peut pas directement le faire avec un cron. On pourrait envisager
utiliser at, mais il n'est pas installé par défaut sur la plupart des
distributions. Reste alors la possibilité de lancer un script toutes les
semaines via un cron et que ce script vérifie alors le numéro de la semaine
et prend alors la décision ou non de lancer la tâche voulue.

Par exemple avec un Bourne Shell, on peut faire :

if [ $(( $(date +"%U") % 3 )) == 0 ]
then
(la tâche à lancer...)
fi

> Merci


De rien.
John (03/06/2005, 07h05)
merci

"TiChou" <gro.uohcit@uohcit> a écrit dans le message de news:
bzium.20050603000052...
[..]
John (03/06/2005, 07h11)
Je viens de lire le man de at, je ne vois pas la possibilite de repetition
(comme le fait cron)
toutes les 3 semaines.

Est ce possible ?

Merci

"TiChou" <gro.uohcit@uohcit> a écrit dans le message de news:
bzium.20050603000052...
[..]
Basile Starynkevitch [news] (03/06/2005, 07h21)
On 2005-06-03, <dom> <dom> wrote:

> Je viens de lire le man de at, je ne vois pas la possibilite de
> repetition (comme le fait cron) toutes les 3 semaines.


Il suffit de commencer le script executé par at par une commande at.

Si vous lancer at -f $HOME/monscript now

commencez $HOME/monscript par la commande

at -f $HOME/monscript now + 3 weeks

Cela étant dit, je prefere le crontab, avec un script qui teste si
c'est la bonne semaine.
michel fabing (03/06/2005, 11h29)
Cron te permet de lancer un script, une tache, une appli a tache de
maniere repetitif. Ainsi on peut parametrer
- les minutes ou ils doit se lancer (toutes les 30 minutes par exemple)
- les heures (toutes les 2 heures, ou seulement a 07H et 22H)
- Les jours (le 01 le 15 du mois)
- les mois (janvier et juillet uniquement)
- les jours de la semaine (du lundi au vendredi)

Donc comme tu peut le voir, il n'y a pas de possibilité de le parametre
toutes les 3 semaines. Pourquoi ne pas lancer le script 2 fois par mois?

dom wrote:
[..]
Khaled (03/06/2005, 12h08)
TiChou wrote:
> Par exemple avec un Bourne Shell, on peut faire :
> if [ $(( $(date +"%U") % 3 )) == 0 ]
> then
> (la tâche à lancer...)
> fi


J'ai bien aimé ta solution mais, si j'ai bien compris le turc, il y un
petit problème: après la semaine 51 on va attendre *au moins* 4
semaines avant que le script se lance dans la semaine 3.

J'ai pensé a une autre solution: chaque fois le script se lance, et
avant qu'il sois terminé, il ecrit un petit fichier (ou même vide).
On met le script dans cron pour execution toutes les semaines. Le
script verra si 3 semaines sont déja passées depuis la date du petit
fichier (la date de la dernière execution), sinon --> exit.

Amts,
Khaled
TiChou (03/06/2005, 14h49)
Dans le message <news:1117793339.090237.25210>,
*Khaled* tapota sur f.c.o.l.configuration :

>> Par exemple avec un Bourne Shell, on peut faire :
>> if [ $(( $(date +"%U") % 3 )) == 0 ]
>> then
>> (la tâche à lancer...)
>> fi

> J'ai bien aimé ta solution


Merci. :p

> mais, si j'ai bien compris le turc, il y un petit problème: après la
> semaine 51 on va attendre *au moins* 4 semaines avant que le script se
> lance dans la semaine 3.


Ah oui, exact, je n'y avais pas pensé. Donc je corrige :

if [ $(( $(date +%s) / 604800 % 3 )) == 0 ]
then
(la tâche à lancer...)
fi
Philippe Naudin (03/06/2005, 20h03)
Le vendredi 03 juin 2005 à 11:29:08,
michel fabing <fabing.michel> a écrit:

> Cron te permet de lancer un script, une tache, une appli a tache de
> maniere repetitif. Ainsi on peut parametrer
> - les minutes ou ils doit se lancer (toutes les 30 minutes par
> exemple) - les heures (toutes les 2 heures, ou seulement a 07H et 22H)
> - Les jours (le 01 le 15 du mois)
> - les mois (janvier et juillet uniquement)
> - les jours de la semaine (du lundi au vendredi)
> Donc comme tu peut le voir, il n'y a pas de possibilité de le
> parametre toutes les 3 semaines.


Seulement parce que un an n'est pas multiple de 3 semaines.

Sinon (solution pas vraiment esthétique, je suis d'accord), il serait
facile de lancer le script le 01/01 puis le 22/01 puis le 12/02 ... ah
oui, il y a aussi le problème des année bissextiles ...

Donc, cron permet d'exécuter un script toutes les 3 semaines
_approximativement_ .

Des fois ça suffit ;)
Cem (04/06/2005, 14h39)
dom wrote:

> Je cherche à planifier un cron, une fois toutes les 3 semaines.


Pas possible directement avec cron, en revanche, ça l'est avec fcron qui
offre plus de possibilités.

Il suffit de mettre
@ 3w commande
dans la table fcrontab.
Khaled (05/06/2005, 01h54)
TiChou wrote:
> Ah oui, exact, je n'y avais pas pensé. Donc je corrige :
> if [ $(( $(date +%s) / 604800 % 3 )) == 0 ]
> then
> (la tâche à lancer...)
> fi


Tu peux m'expliquer cette solution stp? Je ne l'ai pas comprise. Je
l'ai essayé et elle m'a donné "syntax error" :(

merci,
Khaled
TiChou (07/06/2005, 00h31)
Dans le message <news:1117929264.720402.49960>,
*Khaled* tapota sur f.c.o.l.configuration :

>> if [ $(( $(date +%s) / 604800 % 3 )) == 0 ]
>> then
>> (la tâche à lancer...)
>> fi


> Tu peux m'expliquer cette solution stp? Je ne l'ai pas comprise.


On compte le nombre de semaines (un semaime équivaut à 604800 secondes)
depuis le 1er janvier 1970 à minuit UTC (date +%s donne le nombre de
secondes écoulées depuis cette date) et on vérifie que la semaine en cours
est un multiple de 3 (% est l'opérateur modulo en shell et autres langages).

$(date +%s) retourne le résultat de la commande date +%s (substitution de
commandes).

$(( $(date +%s) / 604800 % 3 )) retourne le résultat de l'expression
mathématique $(date +%s) / 604800 % 3 (évaluation arithmétique)

$(date +%s) / 604800 % 3 retourne le reste de la division de $(date +%s) /
604800 par 3 (opérateur modulo).

> Je l'ai essayé et elle m'a donné "syntax error" :(


Quel est votre shell ? Essayez avec l'opérateur = au lieu de
l'opérateur ==.

> merci,


De rien.
Discussions similaires
Cron toutes les 75 h

cron toutes les 25 secondes

Cron m'envoie des messages toutes les minutes

cron toutes les 30s ?


Fuseau horaire GMT +2. Il est actuellement 08h39. | Privacy Policy