gpt4 book ai didi

perl - 从 GNU 并行获取退出状态值

转载 作者:行者123 更新时间:2023-12-04 22:50:46 25 4
gpt4 key购买 nike

下面的 Perl 包装器并行执行命令,节省 STDOUT
和 STDERR 到/tmp 文件:

open(A,"|parallel"); 
for $i ("date", "ls", "pwd", "factor 17") {
print A "$i 1> '/tmp/$i.out' 2> '/tmp/$i.err'\n";
}
close(A);

如何从各个命令获取退出状态值?

最佳答案

要获取单个作业的存在状态,parallel需要在某处写信息。我不知道有没有。如果没有,你可以自己做。

my %jobs = (
"date" => "date",
"ls" => "ls",
"pwd" => "pwd",
"factor" => "factor 17",
);

open(my $parallel, "|parallel");
for my $id (keys(%jobs)) {
print $parallel
$jobs{$id}
." 1> '/tmp/$id.out'"
." 2> '/tmp/$id.err' ; "
."echo \$?"
." > '/tmp/$id.exit'\n";
}

close($parallel);

my $exit_status = $? >> 8;
if ($exit_status >= 255) {
print("Failed\n");
} else {
printf("%d failed jobs\n", $exit_status);
}

for my $id (keys(%jobs)) {
...grab output and exit code from files...
}

更新 : 我去安装了 parallel .

它有一个名为 --joblog {file} 的选项生成带有退出代码的报告。它接受 -如果您希望它输出到 STDOUT,则为文件名。

请注意 parallel不通过信号识别异常死亡,所以这不包括在 --joblog中报告。使用我上面发布的解决方案,缺少 .exit 文件将表明异常死亡。 (不过,您必须首先确保它不存在。)

关于perl - 从 GNU 并行获取退出状态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6310181/

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