GNU/Linux >> Linux Esercitazione >  >> Linux

systemd - Dando al mio servizio più argomenti

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.


Linux
  1. Aggiunta di un nuovo servizio a Linux systemd

  2. Argomenti multipli in Shebang?

  3. Scrivere file di servizio Systemd di base?

  4. Come reindirizzare l'output del servizio systemd su un file

  5. @reboot non funziona in CRON

Comandi Systemctl per gestire il servizio Systemd

Utilizzo delle funzionalità di systemd per proteggere i servizi

10 pratici comandi di sistema:un riferimento

Gestire cgroup con systemd

Il servizio Systemd non avvia Nodejs?

attivazione del socket systemd rispetto a xinetd