10 janvier 2013

Error: OpenHRServer process $PID found, please stop it before.

Depuis HRv7 le script d'arrêt et de démarrage de OpenHR dispatcher.sh :
  • stocke le n° de processus de OpenHR dans $SIGACS/openhr/bin/.OpenHR.running,
  • contrôle la présence effective du processus Unix.
Donc normalement, si vous recevez ce message au démarrage de OpenHR, c'est que le dispatcher est déjà démarré.
Vous pouvez le contrôlez en tapant :  
ps -fu $LOGNAME | grep [o]penhr

C'est une (très) bonne chose, mais ce contrôle présente une erreur de syntaxe :
nb=`ps -ef | grep $PID | grep -c -v "grep"`

Le calcul qui est fait peut ramener des occurrences inopportunes :
  1. Si le PID de OpenHR est 525, ce grep va aussi comptabiliser les processus dont le numéro contient 525 (comme par exemple 6525 et 5259),
  2. Si le fichier .OpenHR.running est obsolète et que le numéro de processus qu'il contient a été réutilisé par le système (par exemple s'il existe un processus 525 désormais attribué à un processus de la base de données).

Je vous propose de remplacez cette ligne (présente deux fois dans le script) par :
nb=`ps -fp $PID | grep -c "openhr"`

1 commentaire:

  1. Merci pour l'info.
    C'est une très bonne suggestion d'amélioration.

    RépondreSupprimer