Esta es una pregunta general de Upstart, pero déjame usar un caso específico:
Centrify es una puerta de enlace NIS a ActiveDirectory. Debe cargarse antes de cualquier servicio que dependa del servicio de autenticación que proporciona, por ejemplo, autofs, cron, nis, et al.
Esto ha resultado ser bastante difícil de lograr, incluso cuando trato de cambiar las dependencias de los otros servicios (lo cual no creo que debamos hacer de todos modos, no quiero tocar los otros trabajos de Upstart si es posible) .
Sugerencias?
start on (started nginx)
en tu nuevo script?start on (started nginx)
significa "iniciar mi servicio después de nginx". Lo cual no es lo mismo que "iniciar nginx antes de mi servicio porque lo necesita".La respuesta de James funciona para una dependencia 1 a 1. Para un 1 a muchos, es decir, para asegurarse de que el servicio A comience antes que los servicios B, C y D, debe adoptar otro enfoque. Puede consultar los scripts de portmap actuales como referencia, pero este es el enfoque general: cree un script de espera.
Escenario: desea que su Servicio A se ejecute siempre antes del servicio-b, el servicio-c y el servicio-d.
Solución: cree un script de espera para el Servicio A. Llámelo "/etc/init/service-a-wait.conf"
Lo que esto significa en inglés simple es: cuando el servicio b, c o d indica que desean comenzar, deben esperar para comenzar hasta que se ejecute el servicio a. El trabajo service-a-wait está diseñado para ejecutarse hasta que service-a haya comenzado. Una vez que finaliza el servicio de espera, ahora los servicios b, cyd son libres de continuar y ejecutarse.
Esto asegurará que el servicio-a esté en funcionamiento antes de que cualquiera de sus dependencias inversas intente iniciarse.
Nota: la línea "instancia $ TRABAJO" es importante en este escenario "comenzar en ... o ... o ...". De lo contrario, solo bloqueará lo que B, C o D dispare primero.
(La instanciación merece una mejor explicación honestamente. Por ahora, solo hazlo.;)
fuente
normal exit 2
línea en sunormal exit 0 2
lugar? La primera línea en lascript
sección claramente puedeexit 0
.