Systemd avec plusieurs execStart [fermé]
je saurais s'il est possible de créer un service avec le même script démarré avec des paramètres d'entrée différents. Tels que:
[Unit]
Description=script description
[Service]
Type=simple
ExecStart=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
est-ce possible? alors il sera lancé en mode série? ou dans deux différents processus? Meilleures salutations!--2-->
2 réponses
si Type=simple
dans votre fichier unit, vous ne pouvez spécifier Qu'un seul Exécustart, mais vous pouvez ajouter autant de ExecStartPre,
ExecStartPost`, mais rien de tout cela n'est adapté aux commandes de longue durée, car elles sont exécutées en série et tout début est tué avant de commencer le suivant.
Si Type=oneshot
vous pouvez spécifier plusieurs ExecStart, ils ne s'exécutent pas en parallèle.
Si ce que vous voulez est d'exécuter plusieurs unités en parallèle, il y a quelques choses que vous pouvez faire:
S'ils diffèrent sur 1 param
vous pouvez utiliser des unités de template, donc vous créez un /etc/systemd/system/foo@.service
. NOTE: (@
est important).
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
Et puis vous exec:
$ systemctl start foo@parameter1.service foo@parameter2.service
ou...
dépendances des cibles
vous pouvez créer plusieurs unités qui se lient à une seule cible:
#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
et puis vous vous modifiez .les unités de service WantedBy=bar.target
comme:
#/etc/systemd/system/foo@.service
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=bar.target
ensuite vous activez juste les services foo que vous voulez en parallèle, et démarrez la cible de barre comme ceci:
$ systemctl daemon-reload
$ systemctl enable foo@param1.service
$ systemctl enable foo@param2.service
$ systemctl start bar.target
NOTE: que cela fonctionne avec n'importe quel type d'Unités non seulement les unités de modèle.
Vous pouvez utiliser ExecStartPre
ou ExecStartPost
pour l'un de scripts
[Unit]
Description=script description
[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target