我已经通过apt
安装了pimd
服务。 这与一个上游systemd单元文件( /lib/systemd/system/pimd.service
)。
我想要服务被重新启动,当它由于某种原因被杀死,因此我希望在单元文件中添加行Restart = always
。 但是,我不想修改上游单元文件。
有没有解决方法?
你有两个select:
将单元文件从/lib/systemd/system/
复制到/etc/systemd/system/
。
然后在/etc/systemd/system/pimd.service
进行修改,以完全覆盖程序包维护人员提供的单元文件。
您可以更改或添加单元的特定configuration设置,而无需通过在插入目录中创build.conf
文件来修改单元文件/etc/systemd/system/<service-name>.d/
即创build一个/etc/systemd/system/pimd.d/restart.conf
看man systemd.unit
RHEL文档build议两种方式:
/etc/systemd/system/name.service.d/config_name.conf
下创buildconfiguration目录和文件来扩展默认单元文件 在这种情况下,文件需要包含这样的内容:
[Service] Restart=always
创build原始单元文件
/usr/lib/systemd/system/
in/etc/systemd/system/
一个副本,并在那里进行更改。
我会尝试选项一,但他们都是可行的select。 无论哪种方式记得在进行更改后运行systemctl daemon-reload
。
创build和修改系统单元文件的RHEL文档
考虑使用脚本来读取上游configuration,修改它,然后将其吐出到放入文件中。
例如,我使用厨师,这里是一个分析马拉松系统单元文件的ruby(库),从它得到原来的ExecStart
require 'inifile' module Dcos def get_execstart_from_unit_file marathon_systemd_unit_file = IniFile.load('/etc/systemd/system/dcos-marathon.service') return marathon_systemd_unit_file['Service']['ExecStart'] end end
然后在配方中,我创build了插件文件以将选项附加到ExecStart
chef_gem 'inifile' exec_start_orig = get_execstart_from_unit_file systemd_service_drop_in 'dcos-marathon' do override 'dcos-marathon.service' precursor 'Service' => { 'ExecStart' => nil } service do exec_start exec_start_orig + ' --env_vars_prefix "DCOS_MARATHON_"' end end