Encore un petit probleme.
J'ai un programme "monitor.pl". Mon but est le suivant :
- monitor.pl doit toujours etre actif.
- Je pensais donc faire un cron de monitor.pl (cf mon autre post dans la meme session), et dans monitor.pl mettre une sous routine qui verifie si monitor.pl est en route si oui la version de monitor.pl que je viens d'executer va etre tuer et la premiere version va continuer a rouler. Dans le cas ou il n'y a pas d'autre monitor.pl en route la version actuelle va rester active.
Dans mon code j'ai mis la sous-routine suivante :
Mon probleme est le suivant cela fonctionne en mode debug seulement je ne comprend pas pourquoi, en effet en mode normale le monitor exit toujours !
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
16
17
18 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/\W+\s+\$$/; # Do not take care about this process. next if $line !~ m/perl monitortor\.pl/; $Exist = 1; last; } print "Monitor is already up so exit\n" if $Exist; exit 0 if $Exist; }
Quelqu'un a t il une solution a me proposer.
Partager