C'est une question générale d'Upstart, mais laissez-moi utiliser un cas spécifique:
Centrify est une passerelle NIS vers ActiveDirectory. Il doit être chargé avant tout service dépendant du service d'authentification fourni, par exemple autofs, cron, nis, et autres.
Cela s'est avéré assez difficile à réaliser, même en essayant de changer les dépendances des autres services (ce que je ne pense pas que nous devrions faire de toute façon, je ne veux pas toucher les autres emplois Upstart si possible) .
Suggestions?
start on (started nginx)
dans votre nouveau script?start on (started nginx)
signifie "commencer mon service après nginx". Ce qui n’est pas la même chose que "démarre nginx avant mon service car il en a besoin".La réponse de James fonctionne pour une dépendance de 1 à 1. Pour un 1 sur plusieurs, c'est-à-dire pour vous assurer que le service A commence avant les services B, C et D, vous devez adopter une autre approche. Vous pouvez consulter les scripts portmap actuels pour référence, mais voici l’approche générale: créer un script d’attente.
Scénario: vous voulez que votre service A soit toujours exécuté avant service-b, service-c et service-d.
Solution: créez un script d'attente pour le service A. Appelez-le "/etc/init/service-a-wait.conf".
En clair, cela signifie: lorsque le service b, c ou d indique qu’il souhaite démarrer, il doit attendre que le service-a soit exécuté. Le travail service-a-wait est conçu pour s'exécuter jusqu'à ce que le service-a ait démarré. Une fois que service-a-wait est terminé, les services b, c et d sont désormais libres de fonctionner.
Cela garantira que le service-a est opérationnel avant toute tentative de démarrage de ses dépendances inverses.
Remarque: la ligne "instance $ JOB" est importante dans ce scénario "démarrer le ... ou .. ou ..". Autrement, vous ne bloquerez que pour n'importe lequel des groupes B, C ou D qui se déclenche en premier.
(L’instanciation mérite honnêtement une meilleure explication. Pour le moment, faites-le.;)
la source
normal exit 2
ligne ne devrait-elle pas être à lanormal exit 0 2
place? La première ligne de lascript
section peut très clairementexit 0
.