tile 发表于 2015-8-5 08:55:37

perl 监控apache日志

  日志滚动,获取 tail -f 里的信息 如果 存在“Too many open files”那么重启apache

#!/usr/bin/perl
my $now=localtime(time);
&write_log("$now start reahache.pl\n" . '----------------------------------' . "\n");
open Tail, '/usr/bin/tail -f /etc/httpd/logs/error_log |' or die "Pipe failed: $!\n";
while (){
my $in = ;
if($in=~/Too many open files/i){
my $get_str_cmd=qx(service httpd restart);
my $log_str = "$in\n" . "$get_str_cmd\n";
&write_log($log_str);
sleep 10;
}
}
close Tail;
sub write_log {
open(TEMP_LOG,">>/lcx/restartLog.log") || die"err: $! \n";
my $write_str=$_;
syswrite(TEMP_LOG,"$write_str\n\n\n");
close(TEMP_LOG);
}

  
设置开机运行
# vi rc.local
su root -c "/usr/bin/perl /lcx/reapache.pl &"
页: [1]
查看完整版本: perl 监控apache日志