如何查看由GNU Parallel执行的并行运行的单个进程的退出代码

时间:2016-06-30 21:01:49

标签: bash shell exit-code gnu-parallel

我在linux shell脚本中有一个数组。 Array包含bash shell脚本中的命令列表。 例如:

 args =( "ls","mv /abc/file1 /xyz/file2","hive -e 'select * from something'" )

现在我正在使用GNU parallel执行这些命令,如下所示

parallel ::: "${args[@]}" 

我想在完成后检查各个流程的状态代码。 我知道$?会向我提供失败的进程数,但我想知道单个进程的退出代码。如何捕获在GNU并行中执行的各个进程的退出代码?

2 个答案:

答案 0 :(得分:1)

使用--halt 1选项,使parallel退出暂停命令,同时返回退出代码。来自man parallel

--halt-on-error val
--halt val
        How should GNU parallel terminate if one of more jobs fail?

        0      Do not halt if a job fails. Exit status will be the
               number of jobs failed. This is the default.

        1      Do not start new jobs if a job fails, but complete the
               running jobs including cleanup. The exit status will be
               the exit status from the last failing job.

        2      Kill off all jobs immediately and exit without cleanup.
               The exit status will be the exit status from the
               failing job.

        1-99%  If val% of the jobs fail and minimum 3: Do not start
               new jobs, but complete the running jobs including
               cleanup. The exit status will be the exit status from
               the last failing job.

答案 1 :(得分:0)

- 作业日志文件

已执行作业的日志文件。使用以下TAB分隔格式将执行的作业列表保存到logfile:序列号,sshlogin,自epoch以来的秒数开始时间,以秒为单位的运行时间,传输的文件中的字节数,返回的文件中的字节数,退出状态,信号和命令运行。