perl – 从GNU parallel获取退出状态值
发布时间:2020-12-15 23:21:56 所属栏目:大数据 来源:网络整理
导读:下面的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); 如何从各个命令获取退出状态值? 解决方法 要获得各个作业
下面的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); 如何从各个命令获取退出状态值? 解决方法
要获得各个作业的存在状态,并行需要在某处写入信息.我不知道是不是.如果没有,你可以自己做.
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("Failedn"); } else { printf("%d failed jobsn",$exit_status); } for my $id (keys(%jobs)) { ...grab output and exit code from files... } 更新:我去了并行安装. 它有一个名为–joblog {file}的选项,它生成一个包含退出代码的报告.如果要将其输出到STDOUT,它接受 – 用于文件名. 请注意,并行不会识别信号异常死亡,因此这不包含在–joblog报告中.使用我上面发布的解决方案,缺少.exit文件将表明异常死亡. (但你必须确保它首先不存在.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |