GNU/Linux >> Tutoriels Linux >  >> Linux

systemd - Donner à mon service plusieurs arguments

Oui, vous pouvez! Définissez-les dans un fichier quelque part et ajoutez-les à EnvironmentFile dans votre service systemd. Par exemple, disons que le contenu de /etc/.progconf est :

ARG1=-o
ARG2=--verbose

Et votre fichier .service :

EnvironmentFile=/etc/.progconf
ExecStart = /usr/bin/prog $ARG1 $ARG2

Vous pouvez écrire dans ce fichier si vous avez besoin de les modifier lors de vos déplacements. Un service ne devrait pas changer ses options très souvent, envisagez peut-être le démarrage automatique ou cron si vous avez besoin d'y parvenir.

Pour plus d'exemples, consultez :https://wiki.archlinux.org/index.php/Systemd/Services


Je voulais faire la même chose, mais sans fichier séparé pour chaque combinaison d'arguments. J'ai découvert que je pouvais passer un long argument avec des espaces, puis utiliser la fonction de fractionnement de l'espace des variables d'environnement de systemd pour séparer les arguments.

J'ai créé un service avec le nom de fichier [email protected] (notez le 'arobase' qui est requis lorsqu'un service prend des arguments ).

[Unit]
Description=Test passing multiple arguments

[Service]
Environment="SCRIPT_ARGS=%I"
ExecStart=/tmp/test.py $SCRIPT_ARGS

Je lance ceci avec sudo systemctl start [email protected]"arg1 arg2 arg3".service et il passe arg1 , arg2 et arg3 en tant qu'arguments de ligne de commande séparés pour test.py.


Le plus simple que j'ai trouvé est :

ExecStart=/bin/bash -c "\"/path/with spaces/to/app\" arg1 arg2 arg3 \"arg with space\""

Tout est autonome.

Cela dit, j'ai trouvé qu'au moins sur Ubuntu 18.04 LTS, je n'ai même pas besoin de faire ça, je peux le faire et ça marche bien :

ExecStart="/path/with spaces/to/app" arg1 arg2 arg3 "arg with space"

$vars fonctionnent également comme arguments avec ce modèle.


Linux
  1. Arguments multiples dans Shebang?

  2. Écrire des fichiers de service Systemd de base ?

  3. Le service Systemd ne démarre pas Nodejs ?

  4. rediriger les journaux du service systemd vers un fichier

  5. Comment envoyer un email si un service systemd est redémarré ?

Commandes Systemctl pour gérer le service Systemd

Utiliser les fonctionnalités de systemd pour sécuriser les services

10 commandes systemd pratiques :une référence

Gestion des cgroups avec systemd

Systemd avec plusieurs execStart

activation de socket systemd vs xinetd