首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果控制组中的某个进程失败,Systemd重新启动服务

如果控制组中的某个进程失败,Systemd重新启动服务
EN

Unix & Linux用户
提问于 2017-03-17 05:50:15
回答 2查看 1.3K关注 0票数 3

我有一个系统服务部门:

代码语言:javascript
运行
复制
[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启动几个进程并对它们进行分叉:

代码语言:javascript
运行
复制
for i in 1 2 3 4 5; do
    bash another_script.sh &
done

所有这些都可以正常工作,直到有一个bash another_script.sh进程以非零状态退出。在这种情况下,我希望systemd服务应该重新启动。如果发生这种情况,是否有任何方法监视控制组故障并重新启动服务?

EN

回答 2

Unix & Linux用户

发布于 2017-03-17 13:29:38

控件组不是作业。

没有所谓的“控制小组失败”。控件组只是用于限制资源的集合。他们不会“失败”。

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

再读

  • Jonathan de Boyne Pollard (2016年)。Linux控制组不是作业。。经常给出答案。
  • Jonathan de Boyne Pollard (2016年)。"如果您有两个服务,请定义两个服务。“。systemd恐怖之家。经常给出答案。
票数 2
EN

Unix & Linux用户

发布于 2017-03-17 09:19:30

来自help wait

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

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

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/352026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档