Tache cron 1er dimanche du mois

Résolu/Fermé
splintermik - 10 avril 2016 à 13:22
 splintermik - 10 avril 2016 à 23:14
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 jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 607
10 avril 2016 à 16:01
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
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 jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 607
10 avril 2016 à 16:11
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 jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 607
10 avril 2016 à 16:16
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
hum, ouai, mais au final la 1ere solution est la plus simple ^^
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
10 avril 2016 à 13:40
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > splintermik
10 avril 2016 à 16:05
echo 'echo "Bonjour" > /tmp/fichier.txt' | at now +1 minutes
0