を使用してpimd
サービスをインストールしましたapt
。これには、アップストリームsystemd
ユニットファイル(/lib/systemd/system/pimd.service
)が付属しています。
何らかの理由で強制終了されたときにサービスを再起動したいのでRestart = always
、ユニットファイルに行を追加したいと思います。
ただし、アップストリームユニットファイルを変更する必要はありません。
これに対する回避策はありますか?
を使用してpimd
サービスをインストールしましたapt
。これには、アップストリームsystemd
ユニットファイル(/lib/systemd/system/pimd.service
)が付属しています。
何らかの理由で強制終了されたときにサービスを再起動したいのでRestart = always
、ユニットファイルに行を追加したいと思います。
ただし、アップストリームユニットファイルを変更する必要はありません。
これに対する回避策はありますか?
回答:
次の2つのオプションがあります。
からユニットファイルを/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>
はこれらのステップを実行します。
systemctl edit <service-name>
systemctl edit --full <service-name>
ます。
RHELのドキュメントでは、次の2つの方法を推奨しています。
/etc/systemd/system/[name-goes-here].service.d/config_name.conf
この場合、ファイルには次のようなものが含まれている必要があります。
[Service]
Restart=always
これが何をするのかsystemctl edit [name-goes-here]
、そのディレクトリとその中に作成しoverride.conf
ます。
オリジナルのユニットファイルのコピーを作成
/usr/lib/systemd/system/
中に/etc/systemd/system/
し、メイクが変化します。
私はオプション1を試しますが、どちらも実行可能なオプションです。いずれにしても実行することを忘れないでくださいsystemctl daemon-reload
にしても、変更を行った後。
スクリプトを使用してアップストリーム構成を読み取り、変更し、ドロップインファイルに吐き出すことを検討してください。
たとえば、私はChefを使用します。これは、マラソンsystemdユニットファイルを解析して元の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
次に、レシピで、ドロップインファイルを作成して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