IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[Crontab] Executable sqlplus introuvable


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 66
    Par défaut [Crontab] Executable sqlplus introuvable
    Bonjour,

    J'essaie d'automatiser les chaîne de l'application sur laquelle je travaille. Et je suis pas sorti.
    J'ai commence à tester aujourd'hui et tous les scripts qui utilisent SQLPLUS sortent erreur.

    Pourquoi ? Parce qu'il semblerait que lorsque je lance ces scripts à travers la crontab, l'executeur sqlplus ne puisse pas être trouvé.

    Alors j'ai écris un petit script de test :
    #!/usr/bin/ksh

    printf "\nDEBUT\n\n"

    sqlplus -h >/dev/null 2>/dev/null

    if [[ $? -eq 0 ]]
    then
    print "SQLPLUS EST TROUVE"
    else
    print "SQLPLUS EST INTROUVABLE"
    fi

    print "\nFIN\n"
    Et oui, quand je le lance à la mano, j'obtiens "SQLPLUS EST TROUVE".
    Et quand je le lance dans la crontab en redirigeant la sortie standard dans un fichier de log, j'obtiens SQLPLUS EST INTROUVABLE.

    Donc, voilà est-ce un problème connu ?
    Y a-t-il une chose que je pourrais faire pour y remédier ?

    Merci.

    Rithy

  2. #2
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    Hello,

    les tâches cron s'éxécutent de base avec des variables d'environnement différentes de celles que l'on aurait dans un terminal.

    C'est notamment le cas avec la variable $PATH qui est limitée à /bin:/usr/bin à l'éxécution
    ( cf man 5 crontab)

    Deux solutions:
    - modifier les variables d'environnement
    - utiliser uniquement des chemins absolus

    Sinon pour voir les variables d'environnement à l'éxécution, il suffit de faire éxécuter par cron le petit script suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/ksh
     
    set > $HOME/cronenv.txt

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 66
    Par défaut
    Citation Envoyé par exodev Voir le message
    Deux solutions:
    - modifier les variables d'environnement
    - utiliser uniquement des chemins absolus
    Je sens que je vais devenir tout vert et commencer à pousser des hurlements.

    J'essaie de modifier une variable d'envir directement dans la crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    "/tmp/crontab7yaGXT" 1 line, 14 characters
    PATH=/bin/sh
    ~
    :wq!
    "/tmp/crontab7yaGXT" 1 line, 13 characters
    PATH=/bin/sh
    crontab: error on previous line; unexpected character found in line.
    crontab: errors detected in input, no crontab file generated.
    Rien que là je ne comprends pas.

    Après j'essaie directement dans le script d'ajouter le chemin de sqlplus dans le PATH :

    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
    #!/usr/bin/ksh
     
    set > $HOME/cronenv.txt
     
    export PATH=$PATH:/u01/app/oracle/product/10204/bin/:/u01/app/oracle/product/10204/:
     
    set > $HOME/cronenv2.txt
     
    printf "\nDEBUT\n\n"
    sqlplus -h >/dev/null 2>/dev/null
     
    if [[ $? -eq 0 ]]
    then
            print "SQLPLUS EST TROUVE"
    else
            print "SQLPLUS EST INTROUVABLE... PUTAIN"
    fi
     
    print "\nFIN\n"
    Toujours introuvable. Et pourtant dans $HOME/cronenv2.txt, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PATH=/usr/bin::/u01/app/oracle/product/10204/bin/:/u01/app/oracle/product/10204/:
    Et finalement j'ai mis directement le chemin de sqlplus en dur et toujours rien.
    Je sais que tu as raison, mais je dois être trop fatigué. Je dois louper un truc.

    Merci.

  4. #4
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    hello,

    Ne t'inquiète pas trop, galérer avec cron c'est normal

    Par contre j'ai fait un petit script pour vérifier mes allégations et ça semble bon

    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
    #!/bin/bash
     
    echo -n "cron script start : " > $HOME/cron.log
    date >> $HOME/cron.log
     
    echo "PATH is ${PATH}" >> $HOME/cron.log
    echo "/usr/sbin/usermod sans chemin absolu" >> $HOME/cron.log
    usermod --help >> $HOME/cron.log 2>&1
    echo $? >>$HOME/cron.log
     
    echo "/usr/sbin/usermod avec chemin absolu" >> $HOME/cron.log
    /usr/sbin/usermod --help >> $HOME/cron.log 2>&1
    echo $? >> $HOME/cron.log
     
    echo "ajout de /usr/sbin a la variable PATH" >> $HOME/cron.log
    PATH=/usr/sbin:$PATH
     
    echo "/usr/sbin/usermod sans chemin absolu" >> $HOME/cron.log
    usermod --help >> $HOME/cron.log 2>&1
    echo $? >> $HOME/cron.log
     
    echo "end of script" >> $HOME/cron.log
    donne

    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
    cron script start : Fri May 14 19:20:01 CEST 2010
    PATH is /usr/bin:/bin
    /usr/sbin/usermod sans chemin absolu
    /home/xoon/test.sh: line 9: usermod: command not found
    127
    /usr/sbin/usermod avec chemin absolu
    Usage: usermod [options] LOGIN
    ...
    2
    ajout de /usr/sbin a la variable PATH
    /usr/sbin/usermod sans chemin absolu
    Usage: usermod [options] LOGIN
    ...
    2
    end of script
    vais tester avec certaines portions de ton code

  5. #5
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    Par rapport aux logs, as-tu essayé de voir la sortie renvoyée par la commande sqlplus ?

    Avec la sortie standard déja redirigée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus -h 2>&1 | head -2

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 66
    Par défaut
    Toujours impossible de déclarer des variables dans mon fichier ...
    Tant pis je lance mon .profile directement dans mon script d'encapsulation.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Crontab et sqlplus
    Par Renaud-62 dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 17/08/2012, 18h44
  2. [crontab] executer un jar
    Par stc074 dans le forum Ubuntu
    Réponses: 3
    Dernier message: 15/09/2011, 20h46
  3. Erreur execution dll introuvable
    Par hegros dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 22/12/2006, 09h40
  4. Lors de son execution crontab
    Par fabszn dans le forum Administration système
    Réponses: 4
    Dernier message: 02/02/2006, 14h18
  5. CD auto executable défaillant à cause DLL introuvable
    Par khyriana dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 19/09/2005, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo