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

  1. 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
  2. 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
  3. 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
    1. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
  8. 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