Alors voila j'ai un petit probleme avec un moniteur ...

J'ai un programme monitor.pl, ce programme roule toujours sur une de mes machines il gere un service web....
Les gens peuvent venir sur le site web deposer une requete la requete est ensuite traiter et un mail et envoyer avec le resultat de la requete.

Le programme qui roule en arriere est pas mal lourd il mais parfois 20min/30min a rouler c'est pour ca que j'ai mis en place un systeme de monitoring qui gere une file... ce qui permet de ne pas surcharger la machine.

La mise en route du moniteur est gerer par un script de demarrage qui est mis en route par un cron job:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
*/10 * * * * /bin/bash /bin/startup_script.sh
ce script source le bashrc ce met dans le bon repertoire est lance le moniteur....

Comme je ne veux pas qu'un nouveau moniteur soit creer toute les 10 minutes et que celui-ci deviennent persistant ....

le moniteur verifie l'existance d'un autre moniteur et exit si un autre moniteur existe deja. Cette fonction est comprise dans la sous routine suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub CheckIfRun {
        my $ps_fh = new IO::Pipe;
        $ps_fh->reader(("ps -ef | grep perl"))
           or die "Can't open pipe from 'ps'.\n";
        my @ps_out = <$ps_fh>;
        $ps_fh->close();
 
        my $Exist = 0;
        foreach my $line (@ps_out){
           next if $line !~ m/perl monitor\.pl;
           $Exist += 1;
        }
 
        exit 0 if $Exist > 1;
}
seulement il m'arrive que deux moniteurs deviennent persistant... et ca je ne comprend pas. Est ce que quelqu'un a une idee le moniteur le plus ancien ne semblant ne plus etre actif...