Script réentrant en shell
Fermé
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
-
2 févr. 2009 à 11:58
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 - 3 févr. 2009 à 15:17
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 - 3 févr. 2009 à 15:17
A voir également:
- Script réentrant en shell
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
11 réponses
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
2 févr. 2009 à 12:39
2 févr. 2009 à 12:39
hello
peut-on voir les scripts, il ne devrait pas y avoir de problèmes, chaque script étant exécuté dans une tâche
peut-on voir les scripts, il ne devrait pas y avoir de problèmes, chaque script étant exécuté dans une tâche
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
2 févr. 2009 à 13:09
2 févr. 2009 à 13:09
je ne peux pas montrer les scripts mais apr contre je peux dire que le script qui ne veut pas se réexcuter plusieurs fois contient notamment un EXPORT et aussi un EXEC ...
donc au final c'est deux fois le même processus qui doit être appelé
donc au final c'est deux fois le même processus qui doit être appelé
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
2 févr. 2009 à 13:14
2 févr. 2009 à 13:14
Salut,
je ne peux pas montrer les scripts
Ben dans ce cas reproduis-en les bribes essentielles et colles nous ça au moins, parce que sans boules de cristal à portée de mains ça va être difficile d'y voir clair ;-(
je ne peux pas montrer les scripts
Ben dans ce cas reproduis-en les bribes essentielles et colles nous ça au moins, parce que sans boules de cristal à portée de mains ça va être difficile d'y voir clair ;-(
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
2 févr. 2009 à 13:23
2 févr. 2009 à 13:23
les deux scripts qui lancent sont similaires et font en gros :
une boucle infinie
dans cette boucle ils font :
./lambda.sh
+ divers affichages
le script lambda.sh se contente de déclarer un nouveau chemin de rep dans la variable PATH
et de lancer une autre commande à l'aide d'un exec ( ce lancement n'a lieu que dans le cas où les bons paramètres sont passés aux scripts précédents ) C'est ce dernier script qui n'est pas réentrant
une boucle infinie
dans cette boucle ils font :
./lambda.sh
+ divers affichages
le script lambda.sh se contente de déclarer un nouveau chemin de rep dans la variable PATH
et de lancer une autre commande à l'aide d'un exec ( ce lancement n'a lieu que dans le cas où les bons paramètres sont passés aux scripts précédents ) C'est ce dernier script qui n'est pas réentrant
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
2 févr. 2009 à 14:28
2 févr. 2009 à 14:28
tu exécutes ?
./lambda.sh
ou
. ./lambda.sh
dans le premier cas, les variables modifiées par lambda.sh ne seront pas disponibles dans la suite du script
./lambda.sh
ou
. ./lambda.sh
dans le premier cas, les variables modifiées par lambda.sh ne seront pas disponibles dans la suite du script
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
2 févr. 2009 à 14:29
2 févr. 2009 à 14:29
euh , je ne comprends pas trop ta réponse :
. ./lambda.sh ?? je ne connais même pas cette façon de faire ... peux tu m'éclairer ?
. ./lambda.sh ?? je ne connais même pas cette façon de faire ... peux tu m'éclairer ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
2 févr. 2009 à 14:56
2 févr. 2009 à 14:56
Si on ne veut pas lancer un nouveau Shell mais exécuter le script dans le Shell actif, on le source:
source script_name.sh
source = .
L'intégrée Bash source est un synonyme de la commande Bourne shell . (dot).
Le script n'a pas besoin de permission d'exécution dans ce cas. Les commandes sont exécutées dans l'environnement du Shell actif, par conséquent tout changement restera tel quel quand le script aura terminé:
http://www.traduc.org/~gleu/ykerb/ch02.html#sect_02_01_03
source script_name.sh
source = .
L'intégrée Bash source est un synonyme de la commande Bourne shell . (dot).
Le script n'a pas besoin de permission d'exécution dans ce cas. Les commandes sont exécutées dans l'environnement du Shell actif, par conséquent tout changement restera tel quel quand le script aura terminé:
http://www.traduc.org/~gleu/ykerb/ch02.html#sect_02_01_03
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
2 févr. 2009 à 15:17
2 févr. 2009 à 15:17
merci pour cette explication
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
3 févr. 2009 à 10:00
3 févr. 2009 à 10:00
mais bon tout ceux-ci ne m'aide pas ... je ne vois toujours pas comment rendre mon script réentrant... si quelqu'un avait une illumination ... merci
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
3 févr. 2009 à 13:14
3 févr. 2009 à 13:14
Je ne pense pas qu'un script puisse être réentrant comme du code. Un script peut être exécuté autant de fois en parallèle, chaque exécution est une tâche séparée avec son propre environnement. Par contre, il peut y avoir un problème, si par exemple, on crée des fichiers:
echo "- démarrré à $(date)" > log
log sera celui du dernier script démarré, il faudrait le singulariser, avec par ex. le PID
echo "- démarrré à $(date)" > log$$
Explique ce que tu veux faire.
echo "- démarrré à $(date)" > log
log sera celui du dernier script démarré, il faudrait le singulariser, avec par ex. le PID
echo "- démarrré à $(date)" > log$$
Explique ce que tu veux faire.
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
3 févr. 2009 à 13:57
3 févr. 2009 à 13:57
les deux scripts qui lancent le script lambda.sh pour se finir font un wait sur le pid du processus fils qui ont lancés ( lambda.sh) peut être que le problème vient de là ??
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
3 févr. 2009 à 14:50
3 févr. 2009 à 14:50
en principe non, parce que chaque lambda.sh lancé en background a un unique PID
boiteasel
Messages postés
12
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
28 juillet 2010
3 févr. 2009 à 15:09
3 févr. 2009 à 15:09
pour récupérer le pid du processus lancé en arriére plan on utilise : $! or cela normalement récupère le pid du dernier processus lancé en arrière plan je me demande si c'est pas ça qui pose le problème tout de même ....
dubcek
Messages postés
18757
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
19 décembre 2024
5 623
3 févr. 2009 à 15:17
3 févr. 2009 à 15:17
il faut le récupérer immédiatement
./lambda.sh &
PID=$!
./lambda.sh &
PID=$!