Menu

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

Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
-
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.
Afficher la suite 

2 réponses

Messages postés
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
215
0
Merci
Pourquoi ne pas supprimer le fichier lock AVANT le lancement du PHP ?

pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16 -
Parce que je veux pas lancer le script si celui-ci tourne toujours ou qu'il est planté!
Flachy Joe
Messages postés
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
215 -
Mais s'il a planté, comment ton script bash le saura ?
pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
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é.
Flachy Joe
Messages postés
2116
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2018
215 -
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
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
Merci.

J'ai trouvé mon bonheur.

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