Tache cron 1er dimanche du mois

Résolu
splintermik -  
 splintermik -
Bonjours a tous, alors voila, je voudrais qu'une commande s’exécute tout les 1er dimanche de chaque mois

j'ai donc mis ça dans crontab -e

01 00 1-7 * 0 commande

le problème c'est que la commande se fait tout les dimanche, et tout les jours du 1 au 7

ya t'il une autre commande qui permettrais de faire une fois , pour le 1er dimanche de chaque mois?

merci

3 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention   1 608
 
Bonjour,

Une solution intéressante :

https://stackoverflow.com/questions/3241086/how-to-schedule-to-run-first-sunday-of-every-month

00 09 * * 7 [ $(date +\%d) -le 07 ] && /run/your/script

"he date +%d gives you number of current day and than you can check if the day is lesser or equal of 7. If it is that run your command.

If you run these script only in Sundays it should means that it runs only in the first Sunday of the month."
1
splintermik
 
merci pour t'as réponse, donc si je comprend bien, : [ $(date +\%d) -le 07 ] sert a voir si la date est égale ou inférieur a 7 ?

EDIT : test concluant, merci beaucoup !! :D
0
HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention   1 608
 
Ca sert à connaître le numéro du jour où la tâche est exécutée. Si tu configures la tâche pour qu'elle soit lancée tous les dimanches, si le résultat est inférieur ou égal à 7, c'est que c'est le premier dimanche du mois. Sinon, c'est qu'il y a déjà eu un dimanche dans ce mois.
0
HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention   1 608
 
Une autre solution, un peu moins propre (voire dégueulasse) :

Tu initialises un fichier 'premierdimanche' à 0.

Tu lances ton script tous les dimanches et tu testes le contenu de ce fichier :

• si il est à 0 : tu lances le contenu du script et tu passes le contenu du fichier à 1.
• si il est à 1 : ton script a déjà été passé ce mois-ci.

Ensuite, tu rajoutes une tâche chaque 1er du mois pour réinitialiser ce fichier à 0.
1
splintermik
 
hum, ouai, mais au final la 1ere solution est la plus simple ^^
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 433
 
Salut,

C'est impossible directement depuis les paramètres de la crontab de définir le 1er dimanche du mois.

Par contre c'est possible en feintant, comme expliqué ici.
0
splintermik
 
merci pour t'as répondse

je viens de tester avec at , donc voici la commande

at now +1 minutes /etc/blablabla

j'ai en retour

syntax error. Last token seen: /
Garbled time

j'ai donc essayer : at now +1 minutes etc/blablabla

et j'ai eu :

syntax error. Last token seen: e
Garbled time

je ne comprend pas trop comment ceci marche, si c'est une commande exécutable uniquement via la console, elle n'est pas intéressante, pour pouvoir être utiliser tout les 1er dimanche de chaque mois automatiquement :p
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 433 > splintermik
 
echo 'echo "Bonjour" > /tmp/fichier.txt' | at now +1 minutes
0