将 systemd 服务与特定的 systemd 服务一起启动/关闭?

将 systemd 服务与特定的 systemd 服务一起启动/关闭?

我有系统:

  • 服务1.服务
  • 服务2.服务
  • 服务3.服务

service1.service 如下所示:

[Unit]
Wants=service2.service service3.service
After=service2.service service3.service

[Service]
ExecStart=/var/scripts/script.sh

[Install]
WantedBy=multi-user.target

这个 service1.service 做了它应该做的事情 - it brings up services 2 and 3 before ExecStart,这是我需要的 50% 。另外 50% 是关闭service2service3关闭,当service1关闭时,systemctl stop service1或者任何其他终止,例如SIGKILL

我应该如何配置service2/service3来完成这个任务?

答案1

看着文档,似乎有几个可用选项。

最简单的可能是PropagatesStopTo=选项:

PropagatesStopTo=,StopPropagatedFrom=

一个或多个单元的以空格分隔的列表,来自该单元的停止请求应传播到该单元,或者停止请求应从该单元传播到该单元。对某个单元发出停止请求也会自动将使用这两个设置链接到该单元的所有单元的停止请求排队。

service1.service如果我这样设置:

[Unit]
Wants=service2.service service3.service
After=service2.service service3.service
PropagatesStopTo=service2.service service3.service

[Service]
Type=exec
ExecStart=...

然后systemctl start service1带来了service2service3,同时systemctl stop service1也带来了service2service3

您还可以使用PartOf或执行某些操作BindsTo,但这需要更改依赖服务(service2service3)。

相关内容