estoy corriendo varias instancias de un trabajador como se describe en esta respuesta: Starting multiple upstart instances automaticallyejemplo reinicio
Pregunta: ¿Puedo reiniciar todas las instancias a la vez?
Para iniciar mis trabajadores que puedo hacer:
initctl empezar mi de trabajo
que entonces permite que haga:
trabajador estado initctl N = 1 trabajador (1) iniciar/ejecutar, proceso 551
initctl status worker N = 2 worker (2) start/Marcha, proceso 552
¿Hay una manera de hacer algo como esto:
initctl reiniciar mi de trabajo
Me gustaría ser capaz de reiniciar todas las instancias sin tener para saber cuántos están corriendo.
Aquí es mi mi-workers.conf
start on stopped cloud-init
stop on shutdown
env NUM_WORKERS=4
script
for i in `seq 1 $NUM_WORKERS`
do
start worker N=$i
done
end script
Y worker.conf
stop on shutdown
chdir /path/to/current
respawn
instance $N
script
exec su -c "/home/worker/.rvm/bin/rvm-shell -c 'bundle exec rake work 2>&1 >> /var/log/worker-$N.log'" worker
end script
Me tomó un tiempo para entender lo que quieres decir, pero una vez que lo tengo ... * * mente soplado – Evgeny
@Evgeny mismo aquí, jaja. Si como yo, y probablemente Evgeny, pasaste 5 minutos tratando de entender qué es lo que está sucediendo aquí: básicamente my-workers.conf genera múltiples scripts y ediciones upstart, pero cada worker.conf ahora tiene la línea 'stop on stopping my-workers ' ', así que cuando intentes detener el proceso de mis trabajadores ya detenido, los trabajadores aún lo escucharán y morirán. Así que "reiniciar" my-workers, aunque en realidad no se estaba ejecutando antes, tiene el efecto de matar a los trabajadores (detener) y ejecutar el script de pre-inicio (inicio) de nuevo, engendrando de nuevo. – Mahn
Funciona, pero es bastante hackish. 'service my-workers start' se bloqueará, de hecho. La documentación de Upstart indica 'Todos los archivos de trabajo deben tener una secuencia de comandos o una secuencia de comandos.' Secuencia de comandos previa al inicio y secuencia de comandos post-parada: no se espera que estos inicien el proceso, de hecho, ¡no pueden! Tal vez es mejor crear otro trabajo para detener o reiniciar a los trabajadores. –