如何使多个systemd服务作为一个组启动/停止?

Wyc*_*yck 8 systemd services

Linux中,关于systemd:如何创建一个启动一堆其他服务的服务?...就像容器、组或父级一样。

我有 5 个左右的systemd服务:

  • app.alpha.service
  • app.bravo.service
  • app.charlie.service
  • app.delta.service
  • app.echo.service

它们都是超级服务的一部分app,我无法成功.service为其创建文件。

我希望能够作为一个团队一起启动/停止它们。

例如:

sudo systemctl start app
Run Code Online (Sandbox Code Playgroud)

我通过创建app.service这样的内容来做到这一点:

[Unit]
Description=App Service
After=network.target

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

在每个app.*.service文件中,它都app.service用以下名称命名PartOf

[Unit]
PartOf=app.service
Run Code Online (Sandbox Code Playgroud)

看来这还不够,而且我还没有正确设置。我该怎么做呢?

而且,它app.service并没有真正做任何事情。它只是想成为一个逻辑容器。不确定这是否允许。

Wyc*_*yck 7

我找到了对我有用的东西。

对app.service的更改使得当您启动app.service 时,其他服务也会启动。将其他服务命名为Wants=

应用程序服务:

[Unit]
Wants=app.alpha.service
Wants=app.bravo.service
Wants=app.charlie.service
Wants=app.delta.service
Wants=app.echo.service
Run Code Online (Sandbox Code Playgroud)

对各个服务的这种更改使得当您停止app.service 时,其他服务也会停止。将控制服务命名为PartOf=

应用程序.*.服务:

[Unit]
PartOf=app.service
Run Code Online (Sandbox Code Playgroud)

我不喜欢必须更改两个 .service 文件,但这足以解锁我。