2012-02-28 14 views
12

Al usar upstart en ubuntu, ¿cómo puedo ejecutar un comando para iniciar un trabajo si no se está ejecutando y reiniciar si ya se está ejecutando? Al implementar una aplicación en un nuevo nodo, el trabajo no está definido.UpStart initctl start | restart ubuntu

initctl restart JOB complains if not already running 
initctl start JOB complains if already running. 

puedo guión que hacer

initctl start JOB 
initctl restart JOB 

Pero no parece ser lo más bonito que hacer.

Respuesta

10

Estaba en frente del mismo problema. A falta de un initctl integrado del comando "lazy-stop-then-start", tenemos que script.

invocación iniciar y reiniciar si falla:

initctl start JOB || initctl restart JOB 

Este script no es probablemente la respuesta tanto de nosotros buscando pero es lo suficientemente corto como para mencionarlo.

Siempre que el servicio funcione bien, será suficiente.

Cuando los servicios fallan, este script falla dos veces; Por ejemplo, si el servicio se detuvo y realmente no se inicia, tampoco podrá reiniciarse.

Definitivamente buscando una mejora en esto.

Espero que esto ayude.

+1

Gracias. Lo sé. Es extraño que initctl no lo soporte. El trabajo está identificado. – Niclas

5

También probé el método de "inicio o reinicio" sugerido por hmalphettes, pero tuve problemas. Al usar este enfoque, las actualizaciones de la secuencia de comandos upstart no se aplicarán. En lugar de eso uso este, que funciona como me esperaba: 'Detener el trabajo si se está ejecutando, a continuación, iniciarlo'

sudo stop JOB || true && sudo start JOB 

Esto básicamente lee

2
sudo service JOB restart 

El comando de servicio era conectaron en Ubuntu para que funcione en el mismo Upstart como lo hace en los casos más comunes en sysvinit.

systemctl restart JOB 

Tiene algunos efectos inesperados, y en general debe estudiarse detenidamente antes de su uso. Está principalmente allí para que pueda reiniciar un trabajo sin volver a cargar la definición del trabajo, que es un caso realmente poco común.

Cuestiones relacionadas