相关疑难解决方法(0)

是否可以覆盖 systemd 单元文件来创建模板单元文件?

我知道 systemd 提供了一种很好的机制来覆盖包提供的单元文件以影响服务配置/行为。这通常通过使用以下命令来完成

sudo systemctl edit <unitfile>
Run Code Online (Sandbox Code Playgroud)

在以下位置创建覆盖 conf 文件

/etc/systemd/system/<unitfile.d>/
Run Code Online (Sandbox Code Playgroud)

Systemd 还提供了一种单独的机制来定义模板单元文件,并在运行时对其进行实例化以创建特定于实例的单元。这需要将模板文件命名为

<servicename>@.service
Run Code Online (Sandbox Code Playgroud)

然后将其实例化为

systemctl start <servicename>@<instancename>
Run Code Online (Sandbox Code Playgroud)

现在,我想将包提供的服务作为多个单元实例运行。我想避免创建自己的模板单元文件,所以我想看看是否可以覆盖包提供的单元文件来创建模板单元文件。

由于,根据我的理解,模板单元文件的命名约定与常规单元文件不同,我认为我无法通过将包提供的单元文件放在 /etc/systemd/system.conf 中来覆盖模板文件。

有什么明确的方法可以实现我想要做的事情吗?

具体场景:grafana 包安装了一个 grafana-server.service 单元文件。我想在我的机器上运行两个 grafana 实例——一个分别用于 DEV 和 STG。我已经能够做到这一点:

但是,这会断开与 grafana 提供的服务单元文件的链接,如果他们在我升级时增强了服务文件,我将需要再次重做此活动。我的目标是避免这种直接依赖,而是将其转换为覆盖依赖。

有什么想法吗?

linux systemd

8
推荐指数
1
解决办法
4097
查看次数

标签 统计

linux ×1

systemd ×1