我有一些服务(A、B、C)需要另一个服务(activemq)处于“活动”状态,并且在启动它们之前让所有必需的端口侦听连接。服务B和C依赖于A,而A又依赖于activemq及其监听的端口(特别是61616端口)。
我遇到的问题是,在 activemq 完成打开所有端口之前,systemd 将 activemq 服务标记为“活动”。所以我的服务 (A) 启动然后终止。
我尝试过的:
set: Restart=on-success (或始终)它有效,但我需要为所有服务( ABC )执行此操作。我不想应用这种规则。
它的工作原理是在服务 A 中添加:
ExecStartPre=/bin/sleep 30
Run Code Online (Sandbox Code Playgroud)
然后服务 A 正确启动,因此 B 和 C 无需任何进一步配置(除了为所有服务设置的相应“After=”和“Requires=”之外:A、B 和 C)。但我认为这不是一个正确/干净的解决方案。
我还尝试了 [Service] 中的其他选项,但没有任何效果,例如 Type=fork 等
我想要的是:
activemq.service 文件是:
[Unit]
Description=Activemq Servoce
After=local-fs.target
After=network.target
[Service]
Type=simple
SuccessExitStatus=0 143
ExecStart=/usr/bin/activemq console
User=activemq
Group=activemq
Restart=always
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud) systemd ×1