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 :

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 voulais me la tenter comme ça, car quand j'essayais a la mano ca marchait plutôt pas mal.
Je lançais d'abord mon script de la manière suivante : Puis je faisais un et cela me retournait bien une seule et unique ligne.

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.

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