web-dev-qa-db-ja.com

systemdサービスファイルで変数を使用する方法

デーモンのサービスファイルを作成しています。変数(initスクリプトでは環境変数を使用しました)を使用して、実行するスクリプトのパラメーターを定義します。たとえば、2つのパラメーター$ PARAM1 $ PARAM2を使用したいとします。

[Unit]
Description=my daemon
After=network.target

[Service]
ExecStart=/usr/local/bin/daemon1
PIDFile=/var/run/daemon1.pid
EnvironmentVariable=PARAM1=123
EnvironmentVariable=PARAM2=444
ExecStartPre=-/usr/bin/wget -O - --post-data=key1=$PARAM1&key2=$PARAM2 http://192.168.1.2/log.php
ExecStopPost=-/usr/bin/wget -O - --post-data=key1=$PARAM1 http://192.168.1.2/log.php
Type=simple

[Install]
WantedBy=multi-user.target

言うまでもなく、この例は機能しません。 systemdでこのようなことを達成できるものはありますか? execコマンドのどのようなパラメーター化が可能ですか?

6
user886869

ディレクティブは Environment であり、EnvironmentVariableではありません。

Environment=

実行されたプロセスの環境変数を設定します。変数割り当てのスペースで区切られたリストを取得します。このオプションは複数回指定できます。その場合、リストされているすべての変数が設定されます。同じ変数が2回設定されている場合、後の設定が前の設定をオーバーライドします。

Environment=PARAM1=123
Environment=PARAM2=444

OR

Environment=PARAM1=123 PARAM2=444

わかりませんが、中かっこ内で使用する必要があるかもしれません{}

--post-data=key1=${PARAM1}&key2=${PARAM2} 
5
Esa Jokinen