是否可以设置-halt条件(或多条件条件?),以便在任何作业失败时停止所有作业,无论退出代码是什么?
我想监视一个事件(我刚刚在负载均衡服务上触发)。我可以通过查看日志来确定事件是通过还是失败,但我必须一次查看多个服务器上的日志。完善!平行吧!我有一个额外的要求:我想根据日志结果返回成功或失败。
所以我想停止并行作业,如果其中任何一个检测到事件(即"-halt now"
)但我不知道检测是否会返回零或非零(这就是:我是试图找出这些信息)所以"-halt now,success=1"
和"-halt,fail=1"
都不正确,我需要找出一种方法来做"-halt,any=1"
}
我查看了源代码,好吧,我的perl Kung-fu不足以解决这个问题(看起来像exitstatus在源代码的很多不同的地方使用,所以我很难弄清楚这是不是是否可行。)
请注意,,success=1
和,fail=1
都可以正常工作(给定相应的退出状态)但我不知道在并行运行之前它是成功还是失败。
答案 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
-这是一个很大的页面)