Perl 循环内没关闭文件句柄引发的问题
发布时间:2020-12-15 23:45:18 所属栏目:大数据 来源:网络整理
导读:v-lhb-db01:/root/perl# cat 1.log 11112222333344445555异常111a1a2a3a4a5java.lang.NullPointerException]1234java.lang.NullPointerException5678--------------------------------------------#!/usr/bin/perl use POSIX;my $dir = '/root/perl';my $fil
v-lhb-db01:/root/perl# cat 1.log 1111 2222 3333 4444 5555 异常111 a1 a2 a3 a4 a5 java.lang.NullPointerException] 1 2 3 4 java.lang.NullPointerException 5 6 7 8 -------------------------------------------- #!/usr/bin/perl use POSIX; my $dir = '/root/perl'; my $file = '1.log'; $mon_file = "$dir/$file"; $IPMACHINE = "MBANKtest1"; $RTXNO="04657"; my $SDATE = strftime("%Y%m%d%H%M%S",localtime()); $UPLOADPATH = "/data/swap/mbanklog/$IPMACHINE-$SDATE$file"; print "########################################################################################################################n"; print "######监控日志文件: $mon_filen"; print "######监控服务器: $IPMACHINEn"; print "######报警通知腾讯通号码: $RTXNOn"; print "######当前报警时间戳: $SDATEn"; ##########监控关键字,以空格隔开################ @warn_arr = qw/Exception 异常/; foreach $a (@warn_arr) { undef @err_info; open( C,"<","$a.tmp" ); while (<C>) { $count = $_; } print "=========================================================================================================================n"; print "######监控异常关键字: "$a"---数量=$countn"; open( A,"$mon_file" ) || die "$!n"; $i = 0; $num = 0; $b = 0; while (<A>) { $num++; if ( $_ =~ /$a/i ) { $i++; $b = $num } } print "######$b is $b######n"; if ( $i != 0 && $i == $count && defined($count) ) { open( B,"$mon_file" ) || die "$!n"; while (<B>) { if (($. >= "$b" -2) and ($. <= "$b" + 2) ){push( @err_info,$_ ) }; }; print "######错误信息: @err_infon"; # system("wget -q --spider -t 1 http://10.130.130.248:8012/sendnotify.cgi?title="$IPMACHINE"&msg="$SDATE$filen@err_info"&receiver="$RTXNO""); ## sleep(5); ## system("./putlog "$mon_file" "$UPLOADPATH""); # print "######日志文件已上传至 $UPLOADPATHn"; #close B; } open( C,">","$a.tmp" ); print C ("$in"); } -------------------------------------------- v-lhb-db01:/root/perl# perl m1.pl ######################################################################################################################## ######监控日志文件: /root/perl/1.log ######监控服务器: MBANKtest1 ######报警通知腾讯通号码: 04657 ######当前报警时间戳: 20150505101212 ========================================================================================================================= ######监控异常关键字: "Exception"---数量=2 ######$b is 17###### ######错误信息: 3 4 java.lang.NullPointerException 5 6 ========================================================================================================================= ######监控异常关键字: "异常"---数量=1 ######$b is 6###### ######错误信息: 这里异常的上下行没有打印,原因为没关闭文件句柄: #!/usr/bin/perl use POSIX; my $dir = '/root/perl'; my $file = '1.log'; $mon_file = "$dir/$file"; $IPMACHINE = "MBANKtest1"; $RTXNO="04657"; my $SDATE = strftime("%Y%m%d%H%M%S",$_ ) }; }; print "######错误信息: @err_infon"; # system("wget -q --spider -t 1 http://10.130.130.248:8012/sendnotify.cgi?title="$IPMACHINE"&msg="$SDATE$filen@err_info"&receiver="$RTXNO""); ## sleep(5); ## system("./putlog "$mon_file" "$UPLOADPATH""); # print "######日志文件已上传至 $UPLOADPATHn"; close B; } open( C,"$a.tmp" ); print C ("$in"); } v-lhb-db01:/root/perl# vi m1.pl v-lhb-db01:/root/perl# perl m1.pl ######################################################################################################################## ######监控日志文件: /root/perl/1.log ######监控服务器: MBANKtest1 ######报警通知腾讯通号码: 04657 ######当前报警时间戳: 20150505101314 ========================================================================================================================= ######监控异常关键字: "Exception"---数量=2 ######$b is 17###### ######错误信息: 3 4 java.lang.NullPointerException 5 6 ========================================================================================================================= ######监控异常关键字: "异常"---数量=1 ######$b is 6###### ######错误信息: 4444 5555 异常111 a1 a2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |