我已经pimd
通过apt
. 这带有一个上游systemd
单元文件 ( /lib/systemd/system/pimd.service
)。
我希望服务在由于某种原因被杀死时重新启动,因此我希望Restart = always
在单元文件中添加该行。
但是,我不想修改上游单元文件。
有什么解决方法吗?
我已经pimd
通过apt
. 这带有一个上游systemd
单元文件 ( /lib/systemd/system/pimd.service
)。
我希望服务在由于某种原因被杀死时重新启动,因此我希望Restart = always
在单元文件中添加该行。
但是,我不想修改上游单元文件。
有什么解决方法吗?
你有两个选择:
将单元文件从 复制
/lib/systemd/system/
到/etc/systemd/system/
.然后进行修改
/etc/systemd/system/pimd.service
以完全覆盖包维护者提供的单元文件。该命令
systemctl edit --full <service-name>
会为您自动执行此操作。您可以更改或添加单元的特定配置设置,而无需通过
.conf
在下拉目录中创建文件 来修改单元文件,/etc/systemd/system/<unit-name>.<unit-type>.d/
即创建一个
/etc/systemd/system/pimd.service.d/restart.conf
该命令
systemctl edit <service-name>
会为您执行这些步骤。看
man systemd.unit
RHEL 文档推荐了两种方法:
/etc/systemd/system/[name-goes-here].service.d/config_name.conf
在这种情况下,文件需要包含如下内容:
就是这样
systemctl edit [name-goes-here]
做的,它创建了该目录并override.conf
在其中创建。我会尝试选项一,但它们都是可行的选择。无论哪种方式,请记住
systemctl daemon-reload
在进行更改后运行。有关创建和修改 systemd 单元文件的 RHEL 文档
考虑使用脚本来读取上游配置,对其进行修改,然后将其吐出到插入文件中。
例如,我使用 Chef,这是一个 ruby(库),它解析 marathon systemd 单元文件以从中获取原始 ExecStart
然后在配方中,我创建了插入文件以将选项附加到 ExecStart