Bonsoir à toutes et à tous.
Développant tranquillou à la maison sous Linux, j'ai créé un petit script appelé monScript.sh en bash.
Je voudrais que l'on ne puisse pas le lancer deux fois. j'ai donc penser à placer une petite boucle if en début de script, de la façon suivante :
Je voulais me la tenter comme ça, car quand j'essayais a la mano ca marchait plutôt pas mal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #/bin/bash sNomScript=`basename $0` if [ `ps | grep ${sNomScript} | wc -l` -gt 1 ]; then echo "ERREUR : Script deja lance" exit 1 fi
Je lançais d'abord mon script de la manière suivante :Puis je faisais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./monScript.sh &et cela me retournait bien une seule et unique ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps | grep monScript.sh
Cependant, dans le script, la commande
me ramène plusieurs lignes. Je soupçonne le grep de s'ajouter à la liste des process correspondant à ma recherche, mais je n'en suis pas certain.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ps | grep monScript.sh
Je me tâte du coup pour savoir comme faire pour tester l'unicité de mon script. ^_^
Comment faire pour ne pas voir le grep dans la liste de mes process et voir uniquement ce que je précise dans ma recherche ?
La solution facile serait d'incrémenter de 1 le nombre de lignes valides lorsqu'une seule occurence de monScript.sh est lancée, mais je ne trouve pas ça très propre :p.
Merci d'avance pour votre aide.
Cdt.
Bahan
Partager