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



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

我的问题是现在我需要在下一个雄猫启动之前启动内部的 Web 应用程序。

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

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

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

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

在此处阅读有关sd_notify的信息

此外,除了进程 A

中的 sd_notify((,您需要在进程 A.service 文件中添加 Type=notify for systemd 以等待 sd_notify((。

在这种情况下,

我不想修改软件上提供的任何软件脚本。

遇到的解决方案符合我的需求。ExecStartPost允许您运行测试或任何测试服务是否启动的内容,或者您只是将其用于睡眠左右。它计入启动,systemd 等待返回,直到 ExecStartPost 也返回(成功(。

最新更新