我有系统:
- 服务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% 是关闭service2
并service3
关闭,当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
带来了service2
和service3
,同时systemctl stop service1
也带来了service2
和service3
。
您还可以使用PartOf
或执行某些操作BindsTo
,但这需要更改依赖服务(service2
和service3
)。