zoukankan      html  css  js  c++  java
  • Perl多进程处理Web日志

    不多说了,这个脚本是我刚学得时候写的。。

    #!/usr/bin/perl
    use Getopt::Std;
    use vars qw( $opt_t $opt_l $opt_n $opt_p);
    use Parallel::ForkManager;
    
    print "-----------------------------------------\n";
    print "|                                       |\n";
    print "|      Poject  of   Log-grep            |\n";
    print "|                                       |\n";
    print "|    help: log-grep.pl -t 线程          |\n";
    print "|          -l 行数 -n 名称 -p 路径      |\n";
    print "-----------------------------------------\n";
    
    
    getopts('t:l:n:p:');
    #把文件切割N份同步执行。
    system "split -l $opt_l $opt_p $opt_n";
    my $pm=new Parallel::ForkManager($opt_t);
    my $dir=".";
    my $file;
    my @dir;
    opendir (DIR,$dir) or die "Can't open the directory!";
    $i=0;
    @dir=readdir DIR;
    foreach $file (@dir){
      if($file=~/$opt_n/){
         $i++;
         $pm->start and next;
         print "创建第$i个线程\n";
         open IN,'<',$file;
      while(<IN>){
         @oldlist=split(/\s/);
         $Date=$oldlist[3];
         #把特殊符号去掉
         $Date=~s/\[//;
         #切割日期
         @home_date=split(/:/,$Date);
         #home_date[0] 就是准确的年月日
         #time就是小时/分钟/秒
         $time="$home_date[1]:$home_date[2]:$home_date[3]";
         #获取访问动作 
         $Option=$oldlist[5];
         #对特殊符号进行替换
         $Option=~s/"//;
         #获取访问协议
         $Agree=$oldlist[7];
         #对特殊符号进行替换
         $Agree=~s/"//;
         #获取客户端访问类型
         $client=$oldlist[11];
         #对特殊符号进行全局替换
         $client=~s/"//g;
         push(@check,$oldlist[0]);
         push(@check,$home_date[0]);
         push(@check,$time);
         push(@check,$Option);
         push(@check,$oldlist[6]);
         push(@check,$Agree);
         push(@check,$oldlist[8]);
         push(@check,$client);
         open OUT,'>>','./out.text';
         print OUT "IP地址:$check[0] 日期:$check[1] 时间:$check[2] 动作:$check[3] 路径:$check[4] 协议:$check[5] 响应:$check[6] 客户端:$check[7]\n";
      }
      close OUT;
      close IN;
      $pm->finish;
      }
    }
    system "rm -rf $opt_n*";
    
  • 相关阅读:
    开发技术--Numpy模块
    开发技术-IPython介绍
    开发--Deepin系统安装
    开发--CentOS-7安装及配置
    开发技术--设计模式
    English--音标重难点
    English--音标拼读
    English--辅音
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
  • 原文地址:https://www.cnblogs.com/xiaoCon/p/2934319.html
Copyright © 2011-2022 走看看