我有一项服务,它依赖于 Cassandra 正常启动以及集群启动和准备就绪。

为了确保满足依赖顺序,我有以下单元文件

[Unit]
Requires=cassandra.service
After=cassandra.service

[Service]
Environment=JAVA_HOME=/usr/java/jre
ExecStart=@bringup.instance.path@/webapps/bringup-app/bin/bringup
TimeoutStartSec=0
ExecStop=
PIDFile=@bringup.instance.path@/logs/bringup.pid
Restart=always

[Install]
WantedBy=multi-user.target

如何确保启动应用程序进程在尝试启动之前等待 30 秒?目前,虽然它是在 Cassandra 之后启动的,但我注意到 Cassandra 集群尚未启动,因此作为启动的一部分,来自启动应用程序连接到 Cassandra 的任何尝试都失败了。

因此,我想添加一个延迟。这可能通过单元文件吗?

最佳答案

您可以在 sleep 之前使用 ExecStart 运行 ExecStartPre 命令:

[Service]
ExecStartPre=/bin/sleep 30

关于systemd - 如何确保在systemd中启动服务之前存在延迟?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43001223/

10-16 23:00