2017-03-20 160 views
-1

我有多个必须按顺序启动的tomcat实例。在After =和Requires =的帮助下,这对于多个服务文件来说并不是真正的问题。systemd:延迟服务的返回,直到启动完成

我的问题是,现在我需要让suche在下一个tomcat启动之前启动里面的webapp。

是否可以定义某种延迟以确保服务的启动?我在文档中找不到任何东西。

否则,我最后的机会是用一个我称之为shell脚本的catalina.sh调用来保证启动,但我宁愿只用systemd来做。

此外,我不想修改代码基础,所以我不能添加sd_notify或类似的东西。

+1

[Systemd http health check]可能重复(http://stackoverflow.com/questions/39679067/systemd-http-health-check) – nir0s

+0

可能的重复:http://stackoverflow.com/questions/39679067/ systemd-http-health-check ..你可以看到解决你的任务。 – nir0s

+0

也许这是真的,但给出的答案对我来说不够详细,对不起。 – Hoall

回答

1

如果Systemd必须等到进程-A完成其操作(在您启动webapp的情况下)并通知systemd以便systemd启动下一个依赖于进程-A的进程-B,那么进程-A已经实现一个sd_notify(),通知systemd该进程已启动,并开始从属应用程序。

阅读sd_notify here

还与sd_notify沿()的过程-A里面你需要添加类型=通知过程A.service文件systemd伺候sd_notify()。

0

在这种情况下,我不想修改软件上提供的任何软件脚本。

我遇到的解决方案符合我的需求。 ExecStartPost允许你运行一个测试或任何测试服务已经启动,或者你只是用它来进行睡眠等等。它计入启动并且systemd等待,直到ExecStartPost返回(成功)。

相关问题