arquivos unitários systemd - argumentos condicionais

2

Estou tentando converter um antigo script de inicialização em um arquivo de unidade do systemd.

Meu script de init origina um arquivo de configuração e, dependendo de algumas variáveis, alguns argumentos são adicionados ao daemon.

O script de inicialização faz algo semelhante a isto:

## 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
}

Como posso conseguir o mesmo efeito com um arquivo de unidade?

Editar 1:

Aqui está um arquivo de esqueleto:

[Unit]
Description=My service
Wants=local-fs.target
Requires=local-fs.target

[Service]
PIDfile=/var/run/daemon.pid
Type=forking
ExecStart=/usr/bin/my_daemon -a -b -c

[Install]
RequiredBy=basic.target
WantedBy=basic.target

Eu quero passar o argumento -x $FOO para o daemon em ExecStart , mas SOMENTE se $FOO for definido em algum arquivo de configuração (digamos, / etc / me / config_file).

Eu sei que posso ler um EnvironmentFile , então eu posso fazer:

[Service]
EnvironmentFile=/etc/me/config_file
ExecStart=/usr/bin/my_daemon -a -b -c -x $FOO

Mas FOO pode não estar definido, portanto, o argumento -x não terá valor ... e ocorrerá um erro.

$FOO é uma opção que é lida por outros serviços, portanto, não é viável fazer FOO=-x <value> .

    
por user5728855 20.01.2017 / 20:53

0 respostas

Tags