Si, puoi! Definiscili in un file da qualche parte e aggiungili a EnvironmentFile
nel tuo servizio systemd. Ad esempio, diciamo che i contenuti di /etc/.progconf sono:
ARG1=-o
ARG2=--verbose
E il tuo file .service:
EnvironmentFile=/etc/.progconf
ExecStart = /usr/bin/prog $ARG1 $ARG2
Puoi scrivere su quel file se hai bisogno di cambiarli mentre sei in movimento. Un servizio non dovrebbe cambiare le sue opzioni molto spesso, forse considera l'avvio automatico o cron se hai bisogno di farlo.
Per altri esempi controlla:https://wiki.archlinux.org/index.php/Systemd/Services
Volevo fare la stessa cosa, ma senza un file separato per ogni combinazione di argomenti. Ho scoperto che potevo passare un lungo argomento con spazi e quindi utilizzare la funzione di suddivisione dello spazio delle variabili d'ambiente di systemd per separare gli argomenti.
Ho creato un servizio con nome file [email protected]
(nota il 'chiocciola' finale che è richiesto quando un servizio accetta argomenti ).
[Unit]
Description=Test passing multiple arguments
[Service]
Environment="SCRIPT_ARGS=%I"
ExecStart=/tmp/test.py $SCRIPT_ARGS
Lo eseguo con sudo systemctl start [email protected]"arg1 arg2 arg3".service
e supera arg1
, arg2
e arg3
come argomenti della riga di comando separati per test.py.
Il più semplice che ho trovato è:
ExecStart=/bin/bash -c "\"/path/with spaces/to/app\" arg1 arg2 arg3 \"arg with space\""
Mantiene tutto autonomo.
Detto questo, ho scoperto che almeno su Ubuntu 18.04 LTS non ho nemmeno bisogno di farlo, posso farlo e funziona bene:
ExecStart="/path/with spaces/to/app" arg1 arg2 arg3 "arg with space"
$vars
funzionano anche come argomenti con questo pattern.