You have 2 monitoring options, one is a daemon which tests the
existence of the server's process. Like
intelli-monitor.pl.
Here is something I did a while back in a similar vein, maybe it will give you some ideas. Maybe a 2 pronged approach, a daemon and an lwp script to test if the apache is locked up, or overloaded.
#!/usr/bin/perl -w
#just run it. The first time it starts the daemon. If you try to start
+ it
#a second time, it gives an error msg. Run it with any commandline arg
+ument,
# like "k" will kill all instances of the script
use strict;
use IO::Handle;
use Proc::ProcessTable;
use Proc::Daemon;
my $t1 = new Proc::ProcessTable;
my @pids;
my $pid;
foreach my $p (@{$t1->table}){
if($p->cmndline =~ /apache-monitor/){
$pid = $p->pid;
#print "$pid\n";
push(@pids,$pid); #unless $pid == $$;
}
}
###################################################
if (exists $ARGV[0]) { foreach $pid (@pids){
print "killing pid $pid\n";
kill 9,$pid;
}
}
####################################################
if ($#pids > 0) {
print "@pids already running!\n";
exit;
}
####################################################
Proc::Daemon::Init;
#open(LOG,">>/var/log/apache-monitor.log") or die $!; #when run as roo
+t
open(LOG,">>/tmp/apache-monitor.log") or die $!; #for testing
while (1){
my $ok =0;
my $t = new Proc::ProcessTable;
foreach my $p (@{$t->table}){
if($p->cmndline =~ /\/usr\/sbin\/httpd/){
print LOG time(),' ',$p->cmndline," already running!\n";
$ok=1;last;
}
}
if ($ok == 0) {print LOG time(),' ',"failed!\n";}
LOG->flush;
sleep(15);
}
I'm not really a human, but I play one on earth.
flash japh