Sono in esecuzione più istanze di un lavoratore come descritto in questa risposta: Starting multiple upstart instances automaticallyesempio Riavvio Upstart elabora
Domanda: Posso riavviare tutte le istanze in una volta?
per iniziare il mio lavoro posso fare:
initctl iniziare la mia colleghi
Che poi mi permette di fare:
lavoratore stato initctl N = 1 lavoratore (1) start/running, processo 551
operaio di stato initctl N = 2 worker (2) start/Esecuzione, processo 552
C'è un modo per fare qualcosa di simile:
initctl riavviare il-lavoratori
Mi piacerebbe essere in grado di riavviare tutte le istanze, senza dover per sapere quanti sono in esecuzione.
Ecco il mio my-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
E 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
ho messo un po 'per capire quello che vuoi dire, ma una volta che ho preso ... * mente soffiato * – Evgeny
@Evgeny stesso qui, haha. Se come me, e probabilmente Evgeny, hai appena passato 5 minuti a cercare di capire cosa sta succedendo qui: fondamentalmente my-workers.conf genera più script e uscite di upstart, ma ogni worker.conf ora ha la linea 'stop per fermare i miei-worker ', quindi quando cerchi di fermare il processo dei miei lavoratori già fermato, i lavoratori lo ascolteranno e moriranno. Quindi "ricominciare" i miei lavoratori, anche se non era realmente in esecuzione prima, ha l'effetto di uccidere i lavoratori (stop) e di eseguire nuovamente lo script di pre-avvio (start), generandoli di nuovo. – Mahn
Funziona ma è abbastanza hackerato. infatti, il servizio "my-workers start" verrà sospeso. La documentazione Upstart afferma che 'Tutti i file di lavoro devono avere una stanza exec o script.' 'Script di preavvio e script post-stop - Questi non dovrebbero avviare il processo, infatti, non possono. Forse è meglio solo creare un altro lavoro per fermare o riavviare i lavoratori. –