Tache cron le dernier lundi de chaque mois ?!

Résolu/Fermé
filosox Messages postés 22 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 3 avril 2008 - 2 avril 2008 à 08:38
 kourryel - 29 mars 2011 à 11:54
Bonjour à tous,

je voudrais créer une tache cron pour que mon script s'exécute le dernier lundi de chaque mois ou le premier lundi de chaque mois, peu importe.
Ce script permet un backup du système.

Peut on le faire et si oui comment ?
Merci d'avance pour vos réponses.

4 réponses

C'est impossible !

Le mieux que j'ai réussi à pondre pour le dernier lundi du mois se fait en 3 lignes... Il reste tout de même un problème sur les années bisextiles... si vous avez 2 lundi entre le 22 et le 29 février mais bon il suffit de le savoir...
50 23 25-31 1,3,5,7,8,10,12 mon votre tache 
50 23 24-30 4,6,9,11 mon        votre tache 
50 23 22-29 2 mon               votre tache 


Par contre je ne comprends pas trop ce qu'on écrits les précédents contributeurs sur le premier lundi du mois... qui pour le coup est simple :
1 0 1-7 * mon     votre tache 
4
Bonjour,

Pour exécuter ton script tu tape crontab -e il s'ouvrira devant toit une fenêtre avec l'éditeur dispo et tu tape:

1 23 1 * 1 ta_commande

et voila ta commande sera exécuter tout les premier lundi du mois à minuit 1 minutes.
ça te vas???
0
Bonsoir,
En général l'éditeur dispo est vi... si tu tapes crontab -l tu verras la liste des tâches apparaitre. (comme un cat)
pour modifier, c'est crontab -e comme a dit Karine.
Je te file un exemple de ce que j'ai mis en place sur un de mes serveurs.
De mémoire je crois que l'ordre est comme ci-dessous.
Minutes heure semaine mois jourdelasemaine /chemin/vers/ton/job.sh
je te conseille vivement de rajouter des commentaires avant chaque ligne, sinon c'est le bordel et même toi tu ne sauras plus à quoi sert telle ligne...
Je ne suis pas parfait, mais suit l'exemple ci-dessous.

linux:~ # crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.3051 installed on Mon Dec 17 10:01:47 2007)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
#mise a jour freshclam - base de signature antivirus clamav
# mise a jour base de signature antivirus clamav
0 9 * * * /root/majclam.sh
# lancement d'un scan antivirus tous les dimanches à 18 heures.
0 18 * * 7 /root/scanvirus.sh
# lancement d'un scan antivirus la nuit (jours de semaine 2,4,5) a partir de 4 h
eures du matin
30 4 * * 2,4,5 /root/scanvirus.sh
# lancement de l'envoi du rapport de sauvegarde lisible tout les matins a 5 h.
0 5 * * * /root/arcmail.sh remplacer avantageusement le
# execution de fetchmail toutes les cinq minutes
5,10,15,20,25,30,35,40,45,50,55,59 * * * * /usr/bin/fetchmail -f /root/.fetchmai
lrc
# execution de l'analyse antirootkit deux fois par semaine
0 6 * * 3,6 /root/antirootkit.sh
# sauvegarde supplementaire des fichiers accueil_SAV
# Pour une recuperation plus rapide.
0 12,20 * * * /root/cpSAV.sh
# pour le nettoyage des messages de procmail dans /var/spool/mail/root
45 * * * * /root/removemailroot.sh
# verification de l'etat de le file d'attente postfix a 10 h, 14 h et 17 h tous
les jours
0 10,14,17 * * * /root/smtpverif.sh

linux:~ #


A bientux.
Jonas.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Jonas
2 avril 2008 à 11:00
Salut,

tous les infos on les trouves dans man 5 crontab

en revanche pour que la tâche s'exécute le 1er lundi du chaque moi, il faut faire un script qui determine quand tombe le 1er ou le dernier lundi de chaque mois

l'editeur par défaut on peut le changer en utilisant la variable d'environnement EDITOR
par exemple sur Debian par défaut c'est l'éditeur nano qui s'ouvre avec la commande crontab -e

si on veut utiliser vim par exemple on peut faire
root@debian:~# export EDITOR=$(which vim)
root@debian:~# echo $EDITOR
/usr/bin/vim
root@debian:~#
--
106485010510997108
0
jojo > Jonas
19 sept. 2008 à 11:35
bonjour jonas,

j'ai un pb avec mon cron sous cygwin.

je lance un cron tout bete qui est le suivant: * * * * * /test et dans mon fichier test c'est une simple ligne ls -lrt > toto
J'ai bien mis les droits 777 sur mon fichier test , mais le cron n'execute pas mon fihier, par contre si manuellement je le lance avec ./test ca marche tres bien.

Peux tu m'aider??
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306 > jojo
20 sept. 2008 à 10:29
Bonjour,

Le chemin que tu as indiqué est-il correct.
Je suis surpris que tu ais un script directement dans /
Sinon * * * * * signifie que le script doit se lancer toutes les minutes tous les jours, tous les mois, etc...
Mais si ça ne fonctionne pas, essaie de mettre une valeur sur l'heure par exemple.
Essaie de faire ceci (à la place de 8,9,10,11 écrit l'heure courante et les deux ou trois suivantes.)
* 8,9,10,11 * * * /chemin/vers/test.sh
Il est rare que l'on ait besoin de lancer une tâche perpétuellement toute les minutes.


Comment as-tu modifié ta crontab ?
As-tu bien utilisé la commande crontab -e ?

A plus.
0
Vim en etideur de text par defaut : the Debian's way
ami20j : si l'on veut utiliser vim en editeur de text par defaut sous debian il faut utiliser l'update alternatives

# apt-get -f install vim-nox
# update-alternatives --set editor /usr/bin/vim.nox
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 avril 2008 à 10:39
Salut,

et si lundi tombe le 2 ou un autre jour?!
1 23 veut dire à 23h00 et une minute
1 0 c'est pour minuit et une minute
0
filosox Messages postés 22 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 3 avril 2008 2
2 avril 2008 à 11:10
Merci pour toutes ces réponses, j'essaye ça et vous tiens au courant, merci a krine83 sa me convient parfaitement, et pour lami20j même si lundi tombe le 2 ce qui compte c'est qu'il se repère au jour et pas a la date.
Encore merci
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > filosox Messages postés 22 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 3 avril 2008
2 avril 2008 à 11:16
Ben, tu nous diras quand le lundi ne tombe pas le 1er du mois
le 3 ème champ parle du jour du mois donc 1-31
la ligne demande un lundi qui est le 1 du mois, d'où ma question ;-)
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
2 avril 2008 à 11:14
pour exécuter une commande le premier lundi du mois, exécuter dans cron, tout les 1er du mois à l'heure hhmm la commande :
at HHmm monday commande
HH est plus grand que hh, commande s'exécutera le prochain lundi ou le jour même à HHmm
si le 1er est un mardi, la commande s'exécutera le lundi suivant, etc.
0