3
所以我有这个小脚本检查特定行两个日志文件和行进行比较。 该脚本用于多个不同的Windows Bamboo代理。但在一个它只是挂起,并没有退出。由于在竹子中使用脚本,因此当该脚本不能退出时,整个作业会挂起。 当我通过远程访问检查计算机并杀死脚本时,作业继续进行,直到它再次到达脚本。Perl脚本挂起无故
这是脚本,这是由另一个脚本启动。
#! /usr/bin/perl
my $naluresult = 2;
my $hevcresult = 2;
my $hevcfailed = 0;
use strict;
use warnings;
#---------------------------------------------
#check for $ARGV[0] and $ARGV[1]
open(my $nalulog, "<", $ARGV[1])
or die "cannot open File:$!\n\n";
while (<$nalulog>) {
chomp;
$_ =~ s/\s+//g;
if ($_ =~ m/MD5:OK/) {
$naluresult = 1;
} else {
if ($_ =~ m/MD5:MISSING/) {
$naluresult = 0;
}
}
}
close $nalulog;
#---------------------------------------------
open(my $hevclog, "<", $ARGV[0])
or die "cannot open File:$!\n\n";
while (<$hevclog>) {
chomp;
$_ =~ s/\s+//g;
if ($_ =~ m/MD5check:OK/) {
$hevcresult = 1;
last;
} else {
if ($_ =~ m/MD5check:FAILED/) { $hevcfailed = 1; }
}
if ($hevcfailed == 1) {
#do stuff
}
}
close $hevclog;
#---------------------------------------------
if ($hevcresult == 2) {
print("Missing MD5 status in HEVC Output");
exit(-1);
} elsif ($naluresult == 2) {
print("Missing MD5 status in NALU Output");
exit(-2);
} else {
if ($naluresult == $hevcresult) { exit(0); }
else {
#different if-statements to print() to log
exit(1);
}
}
#---------------------EOF---------------------
您无法确定它是否挂起,也许它正在读取非常大的文件? '$ | = 1;'在顶部,'打印'。“除非$。 %1000;'每个'while'里面 – 2014-09-30 09:19:59
我无法确定,这是正确的。但文件并不大。 300到2000行之间。这些应该在1100分钟内解析。 – 2014-09-30 09:25:52
另外,仔细分析'#do stuff'部分。 – choroba 2014-09-30 09:31:25