Bonjour,
je viens d'écrire un script sous linux qui me permet de faire l'export d'une base oracle 10g. le script s'exécute bien mais quand je le mets dans le crontab rien il ne s'exécute pas. merci de me filer des tuyaux pour résoudre ce problème.![]()
Bonjour,
je viens d'écrire un script sous linux qui me permet de faire l'export d'une base oracle 10g. le script s'exécute bien mais quand je le mets dans le crontab rien il ne s'exécute pas. merci de me filer des tuyaux pour résoudre ce problème.![]()
Essayez de ré-executer le ".bash_profile" du compte oracle dans votre script appelé dans la crontab ...
il devra être appelé en début de script , et de la façon suivante :
. ~/.bash_profile
je l'ai fait en début de script mais rien!!!
ci-apres mon script.
#!/bin/bash
/home/oracle/.bash_profile
annee=`date +%Y`
mois=`date +%m`
jour=`date +%d`
rep=$mois""$jour""$annee
mkdir $rep
cd $rep
nfile=$rep"d1.dmp"
zipfile=$rep"d1.zip"
logfile=$rep".log"
exp douala/douala file=$nfile indexes=y constraints=y log=$logfile
zip $zipfile $nfile
rm $nfile
Tout d'abord, il faut rajouter un "." devant l'appel de ton bash_profile...
Sinon voilà ce qui se passe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 . /home/oracle/.bash_profile
==> tu lances ton shell, il appelle l'execution ton bash_profile ==> cela ouvre un sous shell (en quelque sorte une deuxième fenêtre shell indépendante de la premiere) dans lequelle sont positionnés les variables d'environnement définis dans bash_profile... puis lorsque bash_profile est fini, le sous shell se referme ==> tu retournes ainsi dans ton shell initial, et tu n'as pas tes variables d'environnement positionnées puisque ce sous shell était décroché du premier.
==> donc il faut "." devant pour executer ton bash_profile dans le même shell que ton programme ....
Deuxièmement, je suggère de créer un fichier log dans lequel tu vas tracer ce qui se passe :
puis tu mets des "echo" avant chaque commande pour tracer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3export FICHIER_LOG="/chemin/fic_`date +%d_%m_%C%y`.log"
exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5echo " Debut du prog ...." > $FICHIER_LOG ... ... echo $rep |tee -a $FICHIER_LOG
Il faut aussi à penser à rediriger stdout/stderr du script appelé par le cron dans un fichier log sinon on a tout ce qui est écrit sur stdout/stderr par le script dans sa boîte aux lettres Unix qu'on peut consulter avec la commande "mail".
Partager