gpt4 book ai didi

windows - Perl 脚本无故挂起

转载 作者:可可西里 更新时间:2023-11-01 09:37:45 24 4
gpt4 key购买 nike

所以我有这个小脚本,它检查两个日志文件中的特定行并比较这些行。该脚本用于多个不同的 Windows Bamboo 代理。但是在其中一个它只是挂起并且不会退出。由于该脚本在 bamboo 中使用,因此当该脚本不退出时,整个作业都会挂起。当我通过远程访问检查计算机并终止脚本时,作业会继续,直到它再次到达脚本。

这是脚本,由另一个脚本启动。

#! /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---------------------

最佳答案

如果您的文件只是普通的磁盘文件,没有被其他进程同时写入、锁定或类似情况,那么您此处的代码中没有任何内容应该挂起。如果文件的大小都合理,则您在此处的代码应该通读文件并完成。

但是,如果其中一个文件被锁定,或者非常大,或者如果您有其他代码可能会陷入无限循环,这就可以解释您的程序挂起的原因。

关于windows - Perl 脚本无故挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com