我在linux shell脚本中有一个数组。 Array包含bash shell脚本中的命令列表。 例如:
args =( "ls","mv /abc/file1 /xyz/file2","hive -e 'select * from something'" )
现在我正在使用GNU parallel执行这些命令,如下所示
parallel ::: "${args[@]}"
我想在完成后检查各个流程的状态代码。 我知道$?
会向我提供失败的进程数,但我想知道单个进程的退出代码。如何捕获在GNU并行中执行的各个进程的退出代码?
答案 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以来的秒数开始时间,以秒为单位的运行时间,传输的文件中的字节数,返回的文件中的字节数,退出状态,信号和命令运行。