Shell pgrep

Résolu/Fermé
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 21 mars 2012 à 10:21
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 21 mars 2012 à 11:29
Bonjour,

J'ai un script shell et j'aimerai que celui-ci ne puisse pas être lancé tant que le process n'est pas terminé. J'ai fait des recherche sur le forum et une solution a été proposé mais ne fonctionne pas chez moi.

Pour se faire j'utilise la commande pgrep:

Début de script:

pgrep test.sh >> /var/lock/pid
if [ -e "/var/lock/pid" ]
then exit 1
fi

Fin de mon script:
rm /var/lock/pid


Le problème est que lorsque j'exécute mon script il rentre directement dans le if de début car un pid existe ce qui est logique.

Comment remédier à ce problème ?

Par avance merci.
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
21 mars 2012 à 10:57
Salut,

Essaie plutôt avec un truc du genre :

#! /bin/bash

if mkdir /tmp/verrou 2>/dev/null
then
...
le reste de ton script à exécuter
...
rmdir /tmp/verrou

else
echo "Le script est déjà en cours d'exécution..."
exit 1
fi

;-))
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
21 mars 2012 à 11:29
Parfait cela fonctionne comme je le souhaitais.
Merci de ta réponse.
0