在Linux中,关于systemd:如何创建一个启动一堆其他服务的服务?...就像容器、组或父级一样。
我有 5 个左右的systemd服务:
app.alpha.serviceapp.bravo.serviceapp.charlie.serviceapp.delta.serviceapp.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并没有真正做任何事情。它只是想成为一个逻辑容器。不确定这是否允许。
我找到了对我有用的东西。
对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 文件,但这足以解锁我。