如何在 systemd 服务文件中使用变量?

如何在 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 命令进行哪种参数化?

答案1

该指令是Environment, 不是EnvironmentVariable

Environment=

为执行的进程设置环境变量。采用空格分隔的变量赋值列表。可以多次指定此选项,在这种情况下将设置所有列出的变量。如果两次设置相同的变量,则后一个设置将覆盖先前的设置。

Environment=PARAM1=123
Environment=PARAM2=444

或者

Environment=PARAM1=123 PARAM2=444

不确定,但您可能需要在括号内使用它们{}

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

相关内容