我正在为守护进程创建一个服务文件,我想使用变量(在 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}