Vérification processus lancé ou pas script Shell

Résolu/Fermé
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - Modifié par pcsystemd le 23/01/2017 à 10:07
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 - 25 janv. 2017 à 09:58
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.
A voir également:

2 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
23 janv. 2017 à 13:40
Pourquoi ne pas supprimer le fichier lock AVANT le lancement du PHP ?

0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
23 janv. 2017 à 14:27
Parce que je veux pas lancer le script si celui-ci tourne toujours ou qu'il est planté!
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
23 janv. 2017 à 16:48
Mais s'il a planté, comment ton script bash le saura ?
0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
24 janv. 2017 à 14:09
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é.
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
24 janv. 2017 à 14:51
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
0
pcsystemd Messages postés 702 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 6 novembre 2024 23
25 janv. 2017 à 09:58
Merci.

J'ai trouvé mon bonheur.

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