2017-09-12 7 views
0

je traduis mes upstart scripts pour systemd scripts et je suis wondring quelle est la meilleure pratique de transalting les éléments suivants:Ce qui est systemd équivalent d'arriviste « à l'arrêt » et « on a commencé »

start on started postgresql 
stop on stopping postgresql 

Est-ce le Requires= section est le droit pour moi ou il y a une meilleure section?

+0

'Requires' n'est pas une section dans les unités de systemd. C'est un spécificateur de dépendance qui spécifie que l'unité A dépend strictement de l'unité B, si l'unité B ne se déclenche pas, l'unité A échoue également (dépendance stricte). Je ne suis pas familier avec upstart, mais jetez un oeil à 'systemd.unit (5)'. – direprobs

Répondre

0

start on et start on started selon upstart:

6,33 départ sur
Cette strophe définit l'ensemble des événements qui causeront le travail d'être automatiquement démarré.
...
6.33.2 Démarrer dépend d'un autre service
start on started other-service

Donc, dans votre cas, start on started postgresql signifie qu'il doit commencer après postgresql a commencé avec succès car elle dépend.

En systemd ce serait:

[Unit] 
Requires=postgresql 
After=postgresql 

Parce que, selon la systemd.unit man page:

After=,Before= ... Si une foo.service unité contient un réglage avant = bar. service et les deux unités sont démarrées, le démarrage de bar.service est retardé jusqu'à ce que foo.service soit démarré. After = est l'inverse de Before =, c'est-à-dire alors qu'après = assure que l'unité configurée est démarrée après le démarrage de l'unité listée, Before = assure l'inverse, que l'unité configurée est complètement démarrée avant l'unité listée est démarrée.
...
Requires= Configure les dépendances requises pour les autres unités. Si cette unité est activée, les unités listées ici seront également activées. Si l'une des autres unités ne parvient pas à s'activer, et qu'une dépendance d'ordre After = sur l'unité défaillante est définie, cette unité ne sera pas démarrée. [...] Si une unité foo.service nécessite un service bar.service tel que configuré avec Requires = et qu'aucun ordre n'est configuré avec After = ou Before =, les deux unités seront démarrées simultanément et sans délai entre elles si foo.service est activé.


Quant à stop on et stop on stopped selon upstart:

6,34 arrêt
Cette strophe définit l'ensemble des événements qui causeront le travail doit être arrêté automatiquement si elle est déjà en train de courir.
...
6.34.3 Arrêt après service dépendant
stop on stopped other-service

Le After=postgresql mentionné ci-dessus vous a couvert parce qu'encore une fois, selon la systemd.unit man page:

After=,Before=[...] Notez que lorsque deux les unités avec une dépendance d'ordre entre elles sont arrêtées, l'inverse de l'ordre de démarrage est appliqué. c'est-à-dire si une unité est configurée avec After = sur une autre unité, la première est arrêtée avant la seconde si les deux sont arrêtées.