アップストリームユニットファイルを変更せずにsystemdユニットファイルを変更する


24

を使用してpimdサービスをインストールしましたapt。これには、アップストリームsystemdユニットファイル(/lib/systemd/system/pimd.service)が付属しています。

何らかの理由で強制終了されたときにサービスを再起動したいのでRestart = always、ユニットファイルに行を追加したいと思います。

ただし、アップストリームユニットファイルを変更する必要はありません。

これに対する回避策はありますか?



何をしようとしましたか?
030

回答:


34

次の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>はこれらのステップを実行します。

見る man systemd.unit


10
2番目のオプションを使用して簡単にすることができますsystemctl edit <service-name>
-muru

7
そして、最初のものを使用しsystemctl edit --full <service-name>ます。
-grawity

22

RHELのドキュメントでは、次の2つの方法を推奨しています。

  1. 構成ディレクトリとファイルを作成して、デフォルトのユニットファイルを拡張します。 /etc/systemd/system/[name-goes-here].service.d/config_name.conf

この場合、ファイルには次のようなものが含まれている必要があります。

[Service]
Restart=always

これが何をするのかsystemctl edit [name-goes-here]、そのディレクトリとその中に作成しoverride.confます。

  1. オリジナルのユニットファイルのコピーを作成/usr/lib/systemd/system/中に/etc/systemd/system/し、メイクが変化します。

私はオプション1を試しますが、どちらも実行可能なオプションです。いずれにしても実行することを忘れないでくださいsystemctl daemon-reloadにしても、変更を行った後。

systemdユニットファイルの作成と変更に関するRHELドキュメント


0

スクリプトを使用してアップストリーム構成を読み取り、変更し、ドロップインファイルに吐き出すことを検討してください。

たとえば、私は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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.