Crontab et spool

cleops Messages postés 24 Statut Membre -  
cleops Messages postés 24 Statut Membre -
Bonjour,

Je voudrais récuperer des données d'une base de données a des heures precises. Pour cela j'ai fait un script qui execute une requete sql. J'ai utilise le Spool pour mettre les données récupérees dans un fichier log.
Le script s'exécute et recupere les données parfaitement quand je l'exécute a la main. Mais quand je mets le script en crontab il ne s'execute plus. Je ne sais pas pourquoi.
Quelqu'un a une idee, svp?

7 réponses

Utilisateur anonyme
 
mets aussi les chemins entiers de tes exécutables (je pense en l'occurrence à sqlplus dans ton script ksh)

atouzazar

parfois l'environnement n'est pas le même dans un shell et dans crontab (mets dans ton crontab un env|sort > $HOME/trucbidule et tu vas voir que ça se résume à pas grand chose. Y en a qui ont eu des problèmes...)
1
hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   50
 
Il faudrait que tu nous affiches ta ligne dans crontab? c'est peut etre le path qui est mauvais ou pas complet?
0
cleops Messages postés 24 Statut Membre 2
 
Voici ma ligne en crontab:
22 * * * * "$HOME/AACSTA/shl/toto.ksh"

ma requete:
SPOOL $HOME/AACSTA/shl/log_test.log
select t.event_id
from user_event t
where t.event_date > sysdate -1/24;
SPOOL OFF
exit;

et le script :
#!/usr/bin/ksh
sqlplus -s name/pwd@base @$HOME/AACSTA/shl/test_req.sql
echo "$(date) ca marche " >> $HOME/AACSTA/log/insert.log

donc il affiche bien la 2e ligne mais pour la premiere il ne se passe rien.

Merci d'avance pour votre aide
0
hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   50
 
Je ne suis pas tres calé en requetes SQL, mais si tu dis que ta requete marche manuellement, donc le probleme c'est le cron. As-tu mis ton script en mode execution? (c-a-d: chmod +x ton_script)
0
cleops Messages postés 24 Statut Membre 2
 
Tout d'abord merci de vos reponses.

J'ai regarde j'ai bien mis mon script en mode execution. Mais quel est le chemin entier pour sqlplus?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cleops Messages postés 24 Statut Membre 2
 
Tout d'abord merci de vos reponses.

J'ai regarde j'ai bien mis mon script en mode execution. Je ne pense pas que se soit un probleme de chemin entier car la requete cree mon fichier log_test.log mais n'ecrit rien dedans. Donc ca veut dire qu'il a reussi a rentrer dans la base de données. Je ne sais pas du tout d'ou vient le probleme :(
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut Cleops,

Au vu de tes messages, je ne sais pas si tu as suivi les recommandations relatives à l'indication du chemin complet de tes commandes.

Mais quel est le chemin entier pour sqlplus?

Fait :

which sqlplus
which date


Et remplace les commandes "sqlplus" et "date" par ces mêmes commandes avec leur chemin complet ("date" aussi, c'est plus sûr).

Il n'est même pas dit que la variable d'environnement "$HOME" soit également présente. Si tu peux, remplace là par le chemin en dur.

Et puis ... quand quelque chose va de travers avec cron, c'est quand même utile de consulter les logs de cron (sous /var/log en principe). Tu devrais avoir plein de trucs instructifs dans tes logs, vu que les stdout et stderr de ton script lancé par cron devraient y être.


Dal
0
cleops Messages postés 24 Statut Membre 2
 
Salut,

C bon j'ai toruve la solution. En fait il faut que j'ajoute un fichier .profile pour que la crontab reconnaisse l'utilisateur.

Merci beaucoup de votre aide
0