systemdブログには、/etc/sysconfigまたは/etc/defaultの使用を推奨する2つの記事が含まれています。
- http://0pointer.de/blog/projects/on-etc-sysinit.html
- http://0pointer.de/blog/projects/the-new-configuration-files.html
システム単位ファイルのシステム固有のオプションを設定するためのいくつかの選択肢は何ですか?
私が考慮したオプション:
- 代わりにテンプレート単位を作成して指定子を使用してください。
欠点は、サービスを開始するたびにこのオプションを指定する必要があることです。これは主に単一サービスの複数のコピーを実行するために使用されるため、実際には適用できません。
- ディレクトリを使用した
Execstart
ローカルデバイスファイルの上書きunitd.d
ここでの欠点は、全体をオーバーライドする必要があることですExecstart
。単に単一のオプションを指定するために使用することはできません。
答え1
これは設定するオプションによって多少異なります。フォルダの場所(ホームディレクトリ、ランタイムディレクトリなど)の場合、systemdは変数を介してそれを提供します。
それ以外の場合は、環境ファイルを使用してオプションを指定し、サービスユニットにそのファイルに変数を含めることができます。たとえば、サービスファイルには一般的なパラメータに加えて、次のものが含まれます。
[Service]
Environment=ENV_OPTION_1=0 ENV_OPTION_2=linux
EnvironmentFile=/etc/default/program-name
ExecStart=/usr/bin/program $ENV_OPTION_1 ${ENV_OPTION_2}
EnvironmentFile
次のキーと値のペアを含む単純なファイルを指します。
ENV_OPTION_1=8913
ENV_OPTION_2=ubuntu
Environment
おそらくあなたが望む基本的なオプションです。
ExecStart
次に、上記のように環境値を使用します。値をスペースで区切ることができる場合は、この構文が必要です${}
。
答え2
私が別の場所で言ったように(qv)、システムの人々はあなたが彫刻.conf
ファイルを使うことを期待し、EnvironmentFile
これが悪い考えであり、その使用が間違いだと思います。
複数のフラグメントファイルを持つこともできます。
# wibble.service.d/execstart.conf
[サービス]
ExecStart=
ExecStart=/usr/local/bin/wibble $OPTIONS0 $OPTIONS1
# wibble.service.d/options0.conf
[サービス]
Environment=OPTIONS0=--wobble
# wibble.service.d/options1.conf
[サービス]
Environment=OPTIONS1=--wubble