systemdユニットファイル - 条件付きパラメータ

systemdユニットファイル - 条件付きパラメータ

以前のinitスクリプトをシステム単位のファイルに変換しようとしています。

私の初期化スクリプトは設定ファイルを提供し、いくつかの変数に基づいてデーモンにいくつかのパラメータを追加します。

initスクリプトは次のようなことを行います。

## My daemon
DAEMON="/usr/bin/my_daemon"

## These arguments are fixed:
DAEMON_ARGS="-a -b -c"

# Called on 'service my_service start'
do_start() {
    ## Source config file
    . /etc/me/config_file

    ## If FOO is defined, add -x $FOO to arguments
    if [ -n "$FOO" ]; then
        DAEMON_ARGS="$DAEMON_ARGS -x $FOO"
    fi

    ## Start the daemon
    start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_ARGS
}

ユニットファイルを使用して同じ効果を得るにはどうすればよいですか?

編集1:

これはスケルトン単位ファイルです。

[単位]
説明=私のサービス
希望=local-fs.target
リクエスト=local-fs.target

[提供する]
PIDファイル=/var/run/daemon.pid
タイプ=フォーク
ExecStart=/usr/bin/my_daemon -a -b -c

[インストールする]
必須=basic.target
WantedBy=basic.target

-x $FOOのデーモンにパラメータを渡したいが、一部の設定ファイル(/etc/me/config_fileなど)で定義されているExecStart場合にのみ可能です。$FOO

私は読むことができることを知っているので、EnvironmentFile次のことができます。

[提供する]
環境ファイル=/etc/me/config_file
ExecStart=/usr/bin/my_daemon -a -b -c -x $FOO

ただし、FOO定義されていない可能性があるため、-xパラメータに値はありません...エラーが発生します。

$FOO他のサービスから読み込んで作成したオプションですFOO=-x <value>

ベストアンサー1

おすすめ記事