Vérification processus lancé ou pas script Shell [Résolu/Fermé]

Signaler
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
-
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
-
Bonjour,

J'ai un script PHP qui fait la synchro de mes users et que je lance via un cron. Lorsque le script se lance il pose un fichier lock qu'il supprime lorsqu'il se termine. Le souci c'est que parfois les script PHP plante et se ferme et du coup le fichier LOCK n'est pas supprimé ce qui pose problème car lorsque le script se relance comme il trouve le fichier LOCK ce dernier ne se lance pas normal.

Je souhaite créer un script Bash qui lancerait le script PHP, qui testerait que celui ci c'est terminé normalement et si ce n'est pas le cas, qui supprime le fichier LOCK.

J'ai fait ceci mais la ou j'ai un doute c'est comment faire pour tester que le script n' est pas encore en execution donc est fermé avant de supprimer le fichier lock?

#! /bin/bash

case $DEBUG in
1) set -x
;;
)
;;
esac

DIR="/path/home"
FLOCK="fichier.lock"

## Lance la synchro ##
php ${DIR}/script.php > /dev/null

## Verification et traitement le cas écheant du fichier .lock ##
if [ -e ${DIR}/${FLOCK} ]
then
rm -f ${DIR}/${FLOCK}
(echo -e "Bonjour,Le fichier ${DIR}/${FLOCK} était présent et vient d'être supprimer.\n\nBonne journee\n\n" | mail -s "Fichier ${DIR}/${FLOCK} supprimé" mail@mail.com
else
echo "Pas de fichier ${DIR}/${FLOCK}!"
exit 1
fi
exit 0


Une idée comment procéder?
Merci




L'accès au savoir est la première liberté que chaque homme devrait avoir.

2 réponses

Messages postés
2080
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 novembre 2019
231
Pourquoi ne pas supprimer le fichier lock AVANT le lancement du PHP ?

Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
Parce que je veux pas lancer le script si celui-ci tourne toujours ou qu'il est planté!
Messages postés
2080
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 novembre 2019
231
Mais s'il a planté, comment ton script bash le saura ?
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
Si dans mon script Bash je vérifie que le processus de mon script n'est plus actif mais que le fichier lock est présent alors j'en déduit que le script a planté car si non mon fichier lock aurait été supprimé.
Messages postés
2080
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 novembre 2019
231
Mais si ton script plante, c'est pas juste parce que tu n'as pas géré toutes les erreurs ?

Sinon au lieu de rediriger sa sortie vers /dev/null, tu peux lui faire envoyer un message en cas de succès, absence de message = planté donc info et suppression du lock
un if [ $(php ${DIR}/script.php) ] devrait faire l'affaire
Messages postés
569
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mars 2020
16
Merci.

J'ai trouvé mon bonheur.

kill -0 ${$} > /dev/null 2>&1 && {