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.
'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