- 论坛徽章:
- 0
|
又修改过了,主要就是把shell相关的命令替换为perl自带的。 是irc上的人建议的。
已经在服务器上跑,看看perl进程能运行多久。
代码如下:
#!/usr/bin/perl -w
use strict;
use POSIX qw(strftime);
$ENV{'PATH'}=":/sbin:/bin:/usr/sbin:/usr/bin:
my $file="logs/log.dat";
my $r_log="/export/home/g/log";
my $radius='./ua_aaaService -l -b -r -f ../conf/config.xml';
for (;;) {
my $mtime1=localtime ((stat($file))[9]);
# print "$mtime1\n";
sleep 30;
my $mtime2=localtime ((stat($file))[9]);
# print "$mtime2\n";
if ($mtime1 eq $mtime2) {
my @proc=`ps -ef`;
my @r_proc=grep /$radius/, @proc;
print "@r_proc";
if (scalar @r_proc==1) {
foreach (@r_proc) {
my $pid=$1 if (/\s+\S+\s+(\S+)\s+.*/);
print "$pid\n";
kill -9,$pid;
my $date=strftime "%Y%m%d%H%M%S",localtime;
open FILE,">>",$r_log
or die "$!";
printf FILE "$date restart-radius(pid alive)\n";
close FILE;
chdir "/export/home/boss/ua/bin/" or die "$1";
system ("./ua_aaaService -l -b -r -f ../conf/config.xml");
}
} elsif (scalar @r_proc==0) {
# print "no pid\n";
my $date2=strftime "%Y%m%d%H%M%S",localtime;
open FILE,">>",$r_log
or die "$!";
printf FILE "$date2 restart-radius(no pid)\n";
close FILE;
chdir "/export/home/boss/ua/bin/" or die "$1";
system ("./ua_aaaService -l -b -r -f ../conf/config.xml);
} else {}
}
next;
} |
[ 本帖最后由 gaochong 于 2009-5-31 13:03 编辑 ] |
|