[RESOLU] programmation crontab....

programmation crontab.... [RESOLU] - Linux et OS Alternatifs

Marsh Posté le 24-03-2004 à 09:11:28    

je désire réaliser une commande le premier lundi de chaque mois à 6h00. j'ai pensé à la solution suivante: 00 6 1-7 * 1 "commande". le problème c'est qu'il réalise la commande tous les jours du premier jusqu'au 7!
quelqu'un a une idée?
 
 merci


Message édité par pallomo le 25-03-2004 à 18:14:00
Reply

Marsh Posté le 24-03-2004 à 09:11:28   

Reply

Marsh Posté le 24-03-2004 à 12:08:20    

tu peux pas le faire : tu peux lui dire chaque jour #n de chaque mois, ou tous les 30 jours, mais pas plus

Reply

Marsh Posté le 24-03-2004 à 12:10:03    

Tu ne peux pas faire ca dans un cron.
Avec ce que tu as ecrit tu lances tout les 1,2,3,4,5,6,7 et aussi tous les lundi.
Il faut que tu fasses le test dans la commande pour savoir si tu es le 1er lundi du mois
Cron : 0 6 * * 1 "/path/script"
La tu lances tout les lundi...
script :  
typset -i DAY=`date +%d`
if [ $DAY -lt 8 ]
then
   command
fi

Reply

Marsh Posté le 24-03-2004 à 12:16:16    

un script automodifiant n'est-il pas possible?
style crontab lance le script
le boulot du script, il vérifie la date à laquelle on est, et la compare à la date à laquelle il doit faire la commande
cette dernière, il la calcule lui même en rajoutant le nombre de jour qu'il faut (en fonction du mois dans lequel on se trouve), donc il se modifie tout seul
 
genre  
if ( datedelos = datecommande)
{
commande
date = date + nbdejourdecemois ();
}
 
int nbdejourdecemois()
{
switch  
MoisDeL'OS = janvier : return 31
MoisDeL'OS = fevrier : return 28 /*on peut même faire en sorte qu'il tienne compte de l'année, et donc des 29 février*/
etc...
}
 
fin, j'y connais rien en script donc (j'ai l'intention de m'y mettre :D)


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
Reply

Marsh Posté le 24-03-2004 à 12:16:48    

ah ben voila, jsuis grilled


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
Reply

Marsh Posté le 24-03-2004 à 12:18:05    

He oui :)

Reply

Marsh Posté le 24-03-2004 à 12:26:32    

pis une fois de plus j'avais trouvé une solution 100 fois plus tordue :D


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
Reply

Marsh Posté le 24-03-2004 à 12:29:37    

merci pour ta réponse david07! je vais mettre ça en place et voir si ça marche :)

Reply

Marsh Posté le 24-03-2004 à 12:32:50    

Si ca marche tu nous fais un petit coucou et tu ajoutes dans le sujet [RESOLU] stp

Reply

Marsh Posté le 24-03-2004 à 12:56:29    

Ca doit etre possible sans script avec fcron
http://fcron.free.fr/

Table 2-2. Time and date fields
field :  allowed values :
minute :  0-59
hour :   0-23
day of month :  1-31
month :  1-12 (or names, see below)
day of week :  0-7 (0 and 7 are both Sunday, or names)


---------------
Fluctuat nec mergitur
Reply

Marsh Posté le 24-03-2004 à 12:56:29   

Reply

Marsh Posté le 25-03-2004 à 11:46:57    

j'ai testé ta solution david07 en écrivant typEset -i DAY='date'
je fais ensuite un echo de la variable qui me retourne 0. pas la peine de te dire que le %d ne passe pas. quelqu'un a une idée?

Reply

Marsh Posté le 25-03-2004 à 13:29:12    

Désolé j'avais oublié le E :(
Par contre typeset -i c'est pour faire un integer donc si tu fait `date` ca me marchera pas car c'est du texte.
En ligne de commande si tu fait date +%d ca donne quoi ?
Sinon teste avec date "+%d"

Reply

Marsh Posté le 25-03-2004 à 14:54:19    

pour le E ya pas de mal ça me permet de découvrir de nouvelle commandes... je ne suis pas un expert :)
 
en ligne de commande date +%d me donne bien le jour soit 25.
 
voilà les différents résultats obtenus:
typeset -i DAY="date +%d"
./essai: line 1: typeset: `date +%d': not a valid identifier
typeset -i DAY="date "+%d""
./essai: line 1: typeset: `date +%d': not a valid identifier
typeset -i DAY= date "+%d"
./essai: line 1: typeset: `+%d': not a valid identifier
 
ta commande semble bonne mais il ne veut pas réaliser la commande située entre les guillemets...
 
et merci pour ton aide!

Reply

Marsh Posté le 25-03-2004 à 18:11:30    

Alors là! Mea culpa! j'ai fait l'erreur! g utilisé le symbole apostrophe au lieu de ` ! et ça fonctionne! j'ai testé en mettant jeudi ds la crontab et en changeant la date du script...  
 
encore merci pour vos réponses et ton aide david! ton script marche mais g mis DAY=`date +%d`... ça fonctionne pareil!

Reply

Marsh Posté le 25-03-2004 à 18:16:59    

tu nous met le script complet en fin de topic?


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
Reply

Marsh Posté le 26-03-2004 à 09:09:10    

dans la crontab on a la ligne suivante:
 
0 6 * * 1 \etc\essai
 
dans essai on a le script suivant:
 
DAY=`date +%d`
if [ $DAY -lt 8 ]
then
  commande
fi
 
pour le fun la première ligne du script peut être remplacé par une de ces 2 lignes:
 
DAY=`date | cut -d ' ' -f 3`
 
typeset -i DAY=`date +%d`
 
nb: attention ne pas utiliser d'apostrophe :)
 
fin du topic!

Reply

Marsh Posté le 26-03-2004 à 11:55:46    

La prochaine fois je ne mettrai pas `` mais plutôt $()
Comme ca plus de problème...

Reply

Marsh Posté le 21-04-2004 à 15:42:59    

Bonjour,
 
j' aimerais utiliser crontab pour automatiser des tâches sur un site hébergé gratuitement chez multimania. Est-ce possible ? Si oui comment ?
 
Merci d' avance,
Vincent

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed