web-dev-qa-db-fra.com

Commande d'entrée dans le service d'arrière-plan

J'ai un service personnalisé qui s'exécute en arrière-plan pour un service de jeu gmod personnalisé. J'ai écrit mon propre fichier gmod.service afin que je puisse maintenant le démarrer avec service gmod start. Vous pouvez le voir ci-dessous. Est-il possible d'entrer une commande dans ce service à partir d'un terminal ou d'un script bash afin que je puisse modifier la carte par exemple? Merci d'avance

[Unit] 
Description=Gmod server 
After=network.target 
[Service] 
Type=simple 
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh 
[Install] 
WantedBy=multi-user.target
2
Kevin Snijder

Utiliser les fichiers de modèle d'unité systemd

Ceci est un bon exemple lorsque des modèles d'unité systemd peuvent être utilisés. Il est possible d’appeler un service systemd avec un argument et d’utiliser cet argument dans la définition de service pour e. g. remettez-le au programme qui est exécuté. Voici un exemple pour votre cas:

Installez votre appareil en tant que

/etc/systemd/system/[email protected]

Changez le fichier pour qu'il ressemble à ceci:

[Unit] 
Description=Gmod server (map: %I)
After=network.target 
[Service] 
Type=simple 
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh %i
[Install] 
WantedBy=multi-user.target
DefaultInstance=myDefaultMap

(Vous devrez peut-être exécuter systemctl daemon-reload à ce stade pour que systemd lise le fichier modifié). Après cela, vous pourrez démarrer gmod avec un argument comme celui-ci:

systemctl start [email protected]

Systemd utilisera le fichier de modèle et remplacera I% par l'argument et %i par l'argument Shell cité, puis le démarrera en tant qu'instance de service nommée [email protected]. Vous pouvez le vérifier en exécutant

systemctl status gmod@myMapName

Vous pouvez également le faire démarrer automatiquement une instance par défaut au démarrage de la manière suivante:

systemctl enable gmod@

De cette façon, vous pouvez même démarrer plusieurs instances de gmod, si le programme le permet. Pour en savoir plus sur le sujet, consultez la page de manuel systemd.unit (5) .

3
Sebastian Stark