2017-03-08 62 views
2

暂停是否有可能设置一个-halt条件,使得如果其中任何失败,不管退出代码的所有作业将暂停(或多个-halt条件?)?GNU并行:成功 - 或者失败

我想监视一个事件(我刚刚在负载均衡服务中单独触发)。我可以通过查看日志来确定事件是否通过或失败,但我必须一次在多个服务器上查看日志。完善!平行吧!我有一个额外的要求,但我想根据日志结果返回成功或失败。所以我想停止并行作业,如果他们中的任何一个检测到事件(即"-halt now"),但我不知道检测是否会返回零或非零(这是关键:我试图找到那些信息),这样既不"-halt now,success=1"也不"-halt,fail=1"是正确的,我需要找出一种方法来像做"-halt,any=1"

我没有通过源一看,嗯,我的perl的功夫是不足以解决这个(和它看起来像退出状态是在源许多不同的地方使用,所以它是我很难搞清楚,如果这是可行与否。)

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

回答

1

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

如果你只是想所有作业被杀害,当第一个完成,然后追加true你的指挥,以迫使它要成为一个成功的:

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