Archive for 09月, 2007

Sep 21 2007

利用cron检查apache进程并做启动、重启工作

Published by David under Unix|Linux

做一个脚本放到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];

}

No responses yet

Close
E-mail It