当前位置: 首页 > 知识库问答 >
问题:

Systemctl依赖失败,停止依赖服务

刘修能
2023-03-14

我有两种服务a.service和b.service。a、 显示服务

[Unit]
Description=My service

[Service]
Type=forking
ExecStart=/bin/sh /home/admin/run.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target,

b、 服务

[Unit]
Description=My service

[Service]
Type=forking
ExecStart=/bin/sh $HOME/theFolder/run.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

现在,当我开始b.service,我确信a.service将被启动。在运行时,突然有人扰乱 /home/admin/run.sh和systemd无法启动a.service(也是systemctl状态a.service显示为状态失败)。现在有一个选项,b.service可以知道a.service失败,它应该停止/退出吗?

共有1个答案

袁玮
2023-03-14

您需要将绑定添加到您的[单元]部分,如man systemd中所述。单位:

需求=配置对其他单元的需求依赖性。如果此单元被激活,此处列出的单元也将被激活。如果其他单元之一被停用或其激活失败,此单元将被停用。此选项可以多次指定,或者可以在一个选项中指定多个空格分隔的单元,在这种情况下,将为所有列出的名称创建需求依赖性。请注意,需求依赖性不会影响服务启动或停止的顺序。这必须使用后=或前=选项独立配置。如果一个单元foo.service需要一个bar.service配置为需求=的单元,并且没有配置排序为后=或前=,那么如果激活foo.service,两个单元将同时启动,并且它们之间没有任何延迟。通常,使用需求=而不是需求=是更好的选择,以便在处理故障服务时实现更健壮的系统。

BindsTo=配置需求依赖关系,在风格上与Requires=非常相似,但是除了此行为外,它还声明当列出的任何单元突然消失时,此单元将停止。如果服务自行终止、设备拔出或安装点卸载而未涉及systemd,则单元可能会突然意外地消失。

 类似资料:
  • 我从2.1.4升级了springboot。发布到2.3.3。该版本更新了几个其他依赖项。POM如下所示: 4.0.0 com。gn gservices 1.0.0-SNAPSHOT jar 当我运行依赖:离线它失败与以下错误: 无法执行目标org.apache.maven.plugins: maven-依赖插件: 3.1.2:去离线(default-cli)在项目gservice:org.ecli

  • 在默认状态下,Maven 在 build 的时候不会包含所依赖的 jar 包。当运行一个 Spark 任务,如果 Spark worker 机器上没有包含所依赖的 jar 包会发生类无法找到的错误(ClassNotFoundException)。 有一个简单的方式,在 Maven 打包的时候创建 shaded 或 uber 任务可以让那些依赖的 jar 包很好地打包进去。 使用 <scope>pr

  • 我试图找出一个对等依赖性问题,对我来说一切都很好...... My 有: 有: staisfies , 不是吗?那么为什么抱怨: ???

  • 我已经集成了CircleCI来在我的应用程序上运行Espresso测试。我从另一个在线github存储库中获取了以下circle.yml文件,并将android构建工具和android版本更改为25。但是,当我在CircleCI服务器上运行构建时,我收到以下错误。我已经在yml文件中授予了执行权限。 我的应用回购结构是 circle.yml(圈.yml): gradle/wrapper/gradl

  • 我想知道以下jar的所有传递依赖项: 将经典命令移动到pom。项目定义依赖关系和输入的xml: mvn依赖:树 将显示: 我没看到魔咒父母: 乍一看,mvn命令似乎可以显示非pom类型的依赖项。 有没有一种方法可以精确地显示使jar保持活动状态所需的每个文件? 谢谢