A voir également:
- Terminaison anormale d'un script ksh
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
- Executeur de script - Télécharger - Édition & Programmation
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
25 janv. 2011 à 15:50
25 janv. 2011 à 15:50
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" ?
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" ?
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.
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.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
25 janv. 2011 à 16:21
25 janv. 2011 à 16:21
Change le "exit 2" par un "return 2" et ça devrait aller mieux ;-))
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 !!
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 !!
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
25 janv. 2011 à 16:48
25 janv. 2011 à 16:48
Comme dis plus haut sans voir ton script, mes compétences en divination sont assez réduites.
Je comprends ...
Et je te remercie d'avoir répondu.
Je vais essayer une autre méthode : via une crontab peut être ...
A bientot
Et je te remercie d'avoir répondu.
Je vais essayer une autre méthode : via une crontab peut être ...
A bientot
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
25 janv. 2011 à 17:02
25 janv. 2011 à 17:02
Est-ce que sans passer par "at" le script marche ?
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.
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.