Vérification processus lancé ou pas script Shell
Résolu
pcsystemd
Messages postés
734
Statut
Membre
-
pcsystemd Messages postés 734 Statut Membre -
pcsystemd Messages postés 734 Statut Membre -
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.
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:
- Vérification processus lancé ou pas script Shell
- Windows ne se lance pas - Guide
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Qu'est ce qui se lance au démarrage de l'ordinateur - Guide
- Verification lien internet - Guide
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