Sep 21 2007
利用cron检查apache进程并做启动、重启工作
做一个脚本放到CRON中定期检查HTTPD的PID文件是否存在,如不存在了 就:service httpd restart
web服务系统检测的程序,5秒检查一次服务器负载,如果loadavg超过50系统自动重起apache
#!/usr/bin/perl
#pid文件
$pidfile=”/www/apache/logstpd.pid”;
#apache操作文件
$apachectl=”/www/apache/bin/apachectl”;
$ApacheIsRun=1;
while (true) {
$nowLoadavg=CheckLoadavg();
print “Now:$nowLoadavgn”;
if ($nowLoadavg >50 && $ApacheIsRun==1) {
#负载高于50
print “The Server have problemnStop Webservern”;
while (CheckApacheRun()==0) {
system(”$apachectl stop”);
sleep(20);
}
$ApacheIsRun=0;
}
if ($ApacheIsRun==0 || CheckApacheRun()==-1) {
print “Start Webservern”;
system(”$apachectl start”);
$ApacheIsRun=1;
sleep(360);
}
sleep(5);
}
sub CheckApacheRun {
my $PID=”";
my $Status=”";
#是否存在pid 不存在返回-1
if (-e $pidfile) {
$PID=`cat $pidfile`;
$PID=~s/n//g;
if ($PID eq “”) { #pid文件为空
return -1;
} else {
$Status=`ps -ef|grep httpd|wc -l`;
if ($Status < 3) {return -1;} else {return 0;}
}
} else {
#pid文件不存在
return -1;
}
}
sub CheckLoadavg {
my @avg=split(/ /,`cat /proc/loadavg`);
return $avg[0];
}