1

我们在暴发户中有以下场景:

我们有一些名为T的任务,以及一些服务AB具有以下要求:

  • T必须与服务AB完全隔离运行
  • 只有任务T完成后, AB才能运行
  • AB可以独立启动

简单来说,TAB的要求,但运行T并不一定意味着应该启动AB 。

我们如何在新贵中执行这些要求?当然,添加其他“助手”工作很好。


我们尝试了以下方法,但不起作用:

# T.conf
task
start on (starting A or starting B)

问题是,如果在启动B时T已经在运行,例如因为A即将启动,那么B将直接启动而不等待T完成。这违反了上面的前两个要求。


另一种选择是从服务的预启动部分显式启动T。但是,如果T已经在执行,这会导致服务无法启动,而不是等待。

4

1 回答 1

1

使用这个额外的辅助任务有一个解决方法(仍然欢迎更好的建议):

start on (starting A or starting B)
task
instance $JOB
script
    until start T; do sleep 1; done
end script

这个助手作业在AB即将启动时启动,阻塞了这些服务。每个服务将有一个此任务的实例。它将阻塞直到T成功完成。

于 2013-09-11T12:56:19.537 回答