Problème process et while
Bonjour,
Je cherche à réaliser un petit script bash qui va lancer un executable. Pour pouvoir lancer cet executable, il ne doit pas exister le même executable tournant déjà sur le système avec un identifiant identique (identifiant interne à l'appli).
L'utilisateur demande au script de lancer l'executable avec en paramètre l'identifiant du nouveau process à lancer.
Je voulais mettre en place un petit algo :
Code:
1 2 3 4 5 6 7 8 9 10 11
| start<-true
chercher les process avec le même nom d'executable
parcourir ces process
si le process courant à le même identifiant que celui passé en param du script :
start <- false
fin si
fin boucle
si start : lancer un nouveau process avec l'identifiant
sinon : alerte |
Voici le petit bout de code que j'ai developpé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| start=true
ps -e -o pgid,pid,ucomm,args -u $USER | grep "proxy" | while read THE_PGID THE_PID THE_CMD THE_ARGS
do
if [ "$THE_CMD" == "$EXEC_NAME" ]; then
echo "$THE_CMD : $THE_ARGS"
# recupère le premier argument
ID_PROXY=`echo ${THE_ARGS#* }`
ID_PROXY=`echo ${ID_PROXY%% *}`
echo "ID_PROXY : $ID_PROXY"
if [ "$ID_PROXY" = "$1" ];
then
start='false'
echo "Affectation Start : $start"
fi
fi
done
echo "$start" |
Voilà, mais à la sortie de ma boucle, la variable start n'a pas été modifié.
Je pense que cela vient du fait que le pipe dans la fonction while read créé un nouveau process dont l'enviropnement n'est pas visible du père...
Est-ce certain d'entre vous on déjà été confronté à ce genre de problème ? Si oui, quelle solution avez vous mis en place pour contourner le problème ?
Merci d'avance pour votre aide ;)