Bonjour à tous,
je suis ennuyé par la difficulté de lancer une tâche dans le crontab de mon compte.
Je suis hébergé sur un serveur mutualisé de chez 1&1 (Debian).
J'ai donc réalisé un bash (dump d'une base mysql et zip d'un répertoire) qui tourne parfaitement lorsque je le lance en direct.
Voici le bash :
Dans ce script il y a des variables (la date du jour et le chemin de répertoire) qui servent à composer le nom du fichier zip à obtenir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #! /bin/bash echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" echo "" ## Parametre pour la commande CRON ## sauve-bash.sh CH_JA db714021152.db.1and1.com dbo714021152 xxxxxxxxx db714021152 ## MPSHF db683202632.db.1and1.com dbo683202632 yyyyyyyyy db683202632 ## $1___ $2______________________ $3__________ $4______ $5_________ ## Parametre du serveur du site site=$1 ## Base a traiter fournie en parametre db_host=$2 db_user=$3 db_passwd=$4 db_name=$5 echo "" ## Confection de la variable CEJOUR cejour=$(date +%Y-%m-%d__%H:%M:%S) echo "Verification de la variable DATE generee" echo $cejour echo "" ## Confection de la variable 'REPERTOIRE' ou sera depose la sauvegarde sauvegarde_bdd="REP_$site/Sauvegardes_BDD" echo "Verification de la variable REPERTOIRE generee " echo $sauvegarde_bdd echo "" ## DUMP de la base dans un fichier.sql dump_file=$sauvegarde_bdd/$site_${cejour}__Backup_sh.sql mysqldump -u "$db_user" -p"$db_passwd" -h"$db_host" "$db_name" > "$dump_file" echo $1 echo "" echo "Le Dump de la base $db_name dans $dump_file est OK" echo "" ls -ltr $dump_file echo "" ## Confection du NOM du zip #file_zip="ZIP_"${site}__${cejour}.zip file_zip="ZIP_"${site}.zip ## ZIP du repertoire du Site zip -r $file_zip REP_${site} echo "" echo "Le ZIP du site REP_${site} dans ZIP_${site}.zip est OK, dans le HOME." echo "" echo "" ls -ltr $file_zip echo "" echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Lors du script lancé la main, les variables se comportent bien et par concaténation, fabriquent le nom (prévu) de mon zip.
Lors de l'exécution du crontab (le mien) , les variables ne sont pas trouvées et le nom de mon zip ne contient que la partie "fixe" du nom de mon zip.
Voici le crontab :
Quel chemin doit être précisé dans le lancement (dans crontab) de mon shell ? Est-ce qu'il se lance d'un mauvais endroit ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #! /bin/sh # # Voici mon premier CRONTAB. # # PATH=$PATH ## Execute la ligne a 1h00 du matin, tous les heures ## 00 01 * * * ./rodo-sauve-bash.sh CH_JA db714021152.db.1and1.com dbo714021152 xxxxxxxxxxx db714021152 ## Execute la ligne a 1h15 du matin, tous les jours ## 15 01 * * * ./rodo-sauve-bash.sh MPSHF db683202632.db.1and1.com dbo683202632 yyyyyyyyyy db683202632 ## Execute toute les 2 minutes (pour tests) */2 * * * * ~/rodo-sauve-bash.sh CH_JA db714021152.db.1and1.com dbo714021152 xxxxxxxxxxx db714021152 */2 * * * * ~/rodo-sauve-bash.sh MPSHF db683202632.db.1and1.com dbo683202632 yyyyyyyyyy db683202632 ## Inscrit la date toutes les 2 minutes dans le fichier txt */2 * * * * ~/date>>ctrl_date.txt (uiserver):u88921243:~$
Je ne saisis pas où est le problème.
Je vous remercie de vos conseils et ... de votre solution.
Maub
Partager