我有一个系统服务部门:
[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服务应该重新启动。如果发生这种情况,是否有任何方法监视控制组故障并重新启动服务?
发布于 2017-03-17 13:29:38
没有所谓的“控制小组失败”。控件组只是用于限制资源的集合。他们不会“失败”。
这里的失败之处在于未能正确地设计服务。如果有多个需要监视的d mon进程,并且如果它们终止了,希望服务管理器单独重新启动它们,那么应该定义多个服务。
systemd恐怖之家。经常给出答案。发布于 2017-03-17 09:19:30
来自help wait:
如果提供了-n选项,则等待下一个作业终止并返回其退出状态。
因此,您应该能够在脚本中使用wait -n来知道任何作业何时完成。
https://unix.stackexchange.com/questions/352026
复制相似问题