+ -
当前位置:首页 → 问答吧 → 不用守护进程怎么样读取定时更新的log文件

不用守护进程怎么样读取定时更新的log文件

时间:2011-07-24

来源:互联网

最近在做perl日志解析的东西,之前写了一个守护进程
   #/usr/bin/per
     my $pid = fork()
      if($pid)
      {
       }
        setpgrp
       while(1)
       {
         sleep(6);
         open(FILE,"2010.log");
          seek(FILE,$currentpos,0);
          while($line=<FILE>)
          {
             $currentpos=tell;
             print "--$line--\n";
         }
         }l
         这样每次只读取更新的日志文件,不需要重新读,但是现在不要用守护进程,要把代码放到crontab下,就是每隔一段时间会定时的去读文件
      #/usr/bin/per
          open(FILE,"2010.log");
           seek(FILE,$currentpos,0);
          while($line=<FILE>)
          {
             $currentpos=tell;
             print "--$line--\n";
         }
         或者
          #/usr/bin/per
          open(FILE,"2010.log");
            while($line=<FILE>)
          {
             print "$line if$.>=n";
         }
         这样每次重新运行文件的时候$currentpos都会归零,也就是说要重头读,有没有那种能保存起来的环境变量,每次运行文件的时候会从上一个值读取

作者: 010shiwei010   发布时间: 2011-07-24

dbmopen (my %position, "position", 0666);

$position{'currentpos"} = $currentpos;

dbmclose %position;

作者: Kitaisky   发布时间: 2011-07-24

我运行了,怎么还是重头开始的,不能只读更新的文件
          #/usr/bin/per
          open(FILE,"2010.log");
          dbmopen (my %position, "position", 0666);
           seek(FILE,$currentpos,0);
          while($line=<FILE>)
          {
             $currentpos=tell;
             $position{'currentpos"} = $currentpos;

             print "--$line--\n";
         }
        dbmclose %position;

是这样吗

作者: 010shiwei010   发布时间: 2011-07-24