对照组不是工作。

对照组不是工作。

我有一个 systemd 服务单元:

[Unit]
After=network.target

[Service]
User=<user>
Type=forking
ExecStart=/opt/app/start.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

/opt/app/start.sh 启动多个进程并分叉它们:

for i in 1 2 3 4 5; do
    bash another_script.sh &
done

所有的事情都工作正常,直到其中一个bash another_script.sh进程以非零状态退出。我希望 systemd 服务在这种情况下应该重新启动。如果发生这种情况,有什么方法可以观察控制组故障并重新启动服务吗?

答案1

对照组不是工作。

不存在“对照组失败”这样的事情。控制组只是用于资源限制的集合。他们不会“失败”。

这里的失败是未能正确设计服务。如果需要监视多个守护进程,并且希望服务管理器在它们终止时单独重新启动它们,那么应该定义多个服务。

进一步阅读

答案2

help wait

如果提供了 -n 选项,则等待下一个作业终止并返回其退出状态。

因此,您应该能够wait -n在脚本中使用来了解任何作业何时完成。

相关内容