Terminaison anormale d'un script ksh

BrunoCG10 -  
 BrunoCG10 -
Bonjour,


J'ai un script execute par le KSH , qui est lance par un 'at'.
Ce script definit une fonction qui effectue un certain nombre d'instructions qui se deroulent parfaitement bien jusqu'a la derniere instruction.Ces opérations sont contenues dans un shell-script qui est donc appele par cette fonction).
Mon script appelant se termine juste apres l'appel de ma fonction alors que j'ai d'autres choses a executer derriere (meme un simple 'echo' execute juste apres ne retourne rien !!!
Je signale que le script appele par la fonction retourne un code retour nul et que je n'utilise nullement la valeur retournee par la fonction.
Des idees ?
Merci a l'avance ... je suis sec ..

4 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Difficile de se faire une idée sans voir le contenu du script ;-((

    Ta fonction source-t-elle un autre script ?
    Ta fonction contient elle un "exit" ?
    0
  2. BrunoCG10
     
    Bonjour Zipe31,
    Difficile pour moi de mettre le code mon script qui est d'ordre professionnel.
    Voici l'idée.

    Script appelant: soit ScriptAppelant.sh lancé par : at 20:30 <ScriptAppelant.sh

    export LOG=/tmp/trt.log
    MaFonction()
    { if [ -x ${PROCEDURE_TRT}
    then ${PROCEDURE_TRT} 1>>$LOG 2>>$LOG
    else echo "Procedure a lancer inexistante" >>$LOG
    exit 2
    fi
    echo "Fin de l'execution de la procedure a l'interieur de la function" >>$LOG
    }
    MaFonction
    echo "Retour dans le script appelant la fonction" >>$LOG
    ...
    ...
    ...
    Voici un exemple du code contenu dans le script dont le nom est pointé par la variable PROCEDURE_TRT
    sh <chemin_d_acces>/proc2 1>>/tmp/log2 2>>/tmp/log3
    echo "proc2 terminee correctement"

    ===========================================
    Et voici le resultat obtenu dans le $LOG, une fois la tache lancée par 'at' terminée

    proc2 terminee correctement
    Fin de l'execution de la procedure a l'interieur de la function

    Je ne reçois jamais le message " Retour dans le script appelant la fonction" car le script se termine là.
    Tous les traitements appelés dans ${PROCEDURE_TRT} se déroulent bien
    Ces traitements ont generes des messages stdout/errout qui ont bien été générés dans les fichiers correspondants.
    J'ai l'impression qu'il y a un probleme de file-descriptor perdu ou quelque chose comme cela.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Change le "exit 2" par un "return 2" et ça devrait aller mieux ;-))
      0
    2. BrunoCG10
       
      Merci pour ta réponse,
      J'avais bien pensé à cela mais je ne passe jamais sur cet exit.
      Dans le cas de cette anomalie où la procedure à exécuter est inexistante , je veux
      effectivement faire un exit et arrêter tout.
      Mais là, tout se passe bien , je vais jusqu'au bout des instructions contenues
      dans la fonction et malgré cela (sans exit) mon shell père se termine.
      Pas de message fdans le maillog ou quoi que ce soit.
      Cela se passe effectivement comme si j'avais codé un 'exit' , bien que ce ne soit pas le cas !!
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Comme dis plus haut sans voir ton script, mes compétences en divination sont assez réduites.
      0
  3. BrunoCG10
     
    Je comprends ...
    Et je te remercie d'avoir répondu.
    Je vais essayer une autre méthode : via une crontab peut être ...
    A bientot
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Est-ce que sans passer par "at" le script marche ?
      0
  4. BrunoCG10
     
    Je n'ai jamais essayé.
    C'est un shell qui tourne la nuit , arrete des bases de données , des applis ...
    Pas facile à faire tourner pendant les heures de bureau ...
    Je vais essayer de faire tourner cela cette nuit avec une crontab
    Je posterai la réponse demain.

    Merci.
    0
    1. BrunoCG10
       
      Bonjour,
      Eh bien voila: lancé par une crontab , le script s'est déroulé correctement jusqu'au bout !!
      Je vais essayer de comprendre pourquoi ...
      Merci encore
      0