![如何重新启动 systemd 中分叉进程之一中唯一失败的进程](https://linux22.com/image/157911/%E5%A6%82%E4%BD%95%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%20systemd%20%E4%B8%AD%E5%88%86%E5%8F%89%E8%BF%9B%E7%A8%8B%E4%B9%8B%E4%B8%80%E4%B8%AD%E5%94%AF%E4%B8%80%E5%A4%B1%E8%B4%A5%E7%9A%84%E8%BF%9B%E7%A8%8B.png)
我有如下的 systemd 文件
[Unit]
Description=ACDS Relay Service (running on port 10400)
[Service]
Type=forking
PIDFile=/opt/liggable/relay/var/relay.pid
RemainAfterExit=no
ExecStart=/bin/bash /opt/liggable/relay/bin/start-acds.sh
ExecStop=/bin/kill $MAINPID
Restart=always
WorkingDirectory=/opt/liggable/relay
User=javauser
Group=javauser
PrivateTmp=true
TimeoutSec=90
SuccessExitStatus=1 143
[Install]
WantedBy=multi-user.target
预期的:
上面/opt/liggable/relay/bin/start-acds.sh
启动了两个java进程A和B,其中进程B停止进程A进行其中一个操作,在此期间我希望系统等待一段时间以等待A启动,如果没有启动则继续进行重新启动 A,否则不执行任何操作
实际的:
启动/opt/liggable/relay/bin/start-acds.sh
两个java进程A和B,其中B想要重新启动A,这样做时systemd会Restart=always
重新启动服务A和B,这不是预期的行为。
如果我想在进程 B 启动进程 A 之前等待一段时间而不是 systemd 重新启动它,有人可以建议我该怎么做吗?