GNU Parallel:停止成功 - 或 - 失败

时间:2017-03-08 19:32:05

标签: gnu-parallel

是否可以设置-halt条件(或多条件条件?),以便在任何作业失败时停止所有作业,无论退出代码是什么?

我想监视一个事件(我刚刚在负载均衡服务上触发)。我可以通过查看日志来确定事件是通过还是失败,但我必须一次查看多个服务器上的日志。完善!平行吧!我有一个额外的要求:我想根据日志结果返回成功或失败。

所以我想停止并行作业,如果其中任何一个检测到事件(即"-halt now")但我不知道检测是否会返回零或非零(这就是:我是试图找出这些信息)所以"-halt now,success=1""-halt,fail=1"都不正确,我需要找出一种方法来做"-halt,any=1"}

我查看了源代码,好吧,我的perl Kung-fu不足以解决这个问题(看起来像exitstatus在源代码的很多不同的地方使用,所以我很难弄清楚这是不是是否可行。)

请注意,,success=1,fail=1都可以正常工作(给定相应的退出状态)但我不知道在并行运行之前它是成功还是失败。

2 个答案:

答案 0 :(得分:1)

如果您(作为人类)正在查看日志,为什么不使用Ctrl-C?

如果您只是希望在第一次完成时杀死所有作业,则将true附加到您的命令以强制它成功:

parallel -Sserver{1..10} --halt now,success=1 dosomething {}\;true ::: 1..100

答案 1 :(得分:1)

GNU Parallel联机帮助页说:

--halt now,done=1

其中一项作业完成时退出。终止正在运行的工作。

来源:https://www.gnu.org/software/parallel/man.html(搜索--halt-这是一个很大的页面)