Crontab et spool
cleops
Messages postés
24
Statut
Membre
-
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?
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?
A voir également:
- Crontab et spool
- Spool imprimante - Guide
- Crontab toutes les minutes ✓ - Forum Redhat
- Cron toutes les N minutes > à 30 - Forum Shell
- [Script shell] crontab ✓ - Forum Shell
- Spool oracle - Forum Oracle
7 réponses
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...)
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...)
Il faudrait que tu nous affiches ta ligne dans crontab? c'est peut etre le path qui est mauvais ou pas complet?
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
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
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?
J'ai regarde j'ai bien mis mon script en mode execution. Mais quel est le chemin entier pour sqlplus?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :(
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 :(
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
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