如何分组/组合 systemd 服务?

如何分组/组合 systemd 服务?

我有三个 systemd 服务(Docker 容器,但这并不重要)。所有这三个服务都必须运行,应用程序才能完全正常运行。

为了简化操作团队的流程,我创建了 forth systemd 服务,使用RequiresPartOf指令将它们全部组合在一起。启动和停止此 forth 服务现在将以正确的顺序启动和停止三个容器。

最后一个挑战是让第四个 systemd 服务显示正确的状态。现在启动服务后它显示“已加载/未激活”。是否可以配置它,使其仅在前三个服务启动并运行时才显示“已加载/激活”?

[Unit]
Description=This is the group
Requires=a.service b.service c.service

[Service]
ExecStart=/bin/echo "Starting"
ExecStop=/bin/echo "Stopping"

[Install]
WantedBy=local.target

,并包含a.serviceb.servicec.servicePartOf=group.service

答案1

我认为你需要添加一个After=条款。如果你的三项服务是相互关联的,你也许还可以简化你的Requires

如果您还希望当其他三项服务停止时第四项服务也停止,那么您也需要添加一个BindsTo条目。

例如:

[Unit]
Description=This is the group
Requires=c.service
After=c.service
BindsTo=c.service

相关内容