Como usar variáveis em um arquivo de serviço do systemd?

3

Estou criando um arquivo de serviço para um daemon e gostaria de usar variáveis (em scripts de init usei variáveis de ambiente) para definir alguns parâmetros para os scripts executados. Por exemplo, eu gostaria de usar 2 parâmetros $ 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

Escusado será dizer que este exemplo não funciona. Existe algo assim realizável com o systemd? Que tipo de parametrização de comandos exec é possível?

    
por user886869 13.08.2017 / 05:23

1 resposta

2

A diretiva é Environment , não EnvironmentVariable .

Environment=

Sets environment variables for executed processes. Takes a space-separated list of variable assignments. This option may be specified more than once, in which case all listed variables will be set. If the same variable is set twice, the later setting will override the earlier setting.

Environment=PARAM1=123
Environment=PARAM2=444

OR

Environment=PARAM1=123 PARAM2=444

Não tenho certeza, mas talvez seja necessário usá-los entre chaves {} :

--post-data=key1=${PARAM1}&key2=${PARAM2} 
    
por 13.08.2017 / 08:42