systemd:延迟服务返回,直到启动完成

时间:2017-03-20 15:03:29

标签: tomcat init systemd

我有多个必须按顺序启动的tomcat实例。在After =和Requires =的帮助下,这不是多个服务文件的真正问题。

现在我的问题是我需要在下一个tomcat启动之前启动内部webapp。

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

否则我的最后一次机会是使用我调用的shell脚本来回绕catalina.sh调用,以确保启动,但我更愿意只使用systemd。

此外,我不想修改代码基础,因此我无法添加sd_notify或类似内容。

2 个答案:

答案 0 :(得分:1)

如果Systemd必须等到进程A完成其操作(在你的情况下启动webapp)并通知回systemd,以便systemd启动下一个进程-B,它依赖于进程-A,那么进程-A必须实现一个sd_notify(),告知systemd进程A已启动,并继续启动依赖应用程序。

了解sd_notify here

与进程A中的sd_notify()一起,你需要在process-A.service文件中添加Type = notify,以便systemd在sd_notify()上等待。

答案 1 :(得分:0)

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

我遇到的解决方案符合我的需求。 ExecStartPost允许您运行测试或其他任何测试服务已启动或您只是使用它进行睡眠等。它计入启动和systemd等待返回,直到ExecStartPost返回(成功)。