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 :
Voici le petit bout de code que j'ai developpé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Voilà, mais à la sortie de ma boucle, la variable start n'a pas été modifié.
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 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"
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![]()
Partager