以前の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>
。