Używam wielu wystąpień pracownika w sposób opisany w tej odpowiedzi: Starting multiple upstart instances automaticallyinstancja Ponowne uruchomienie Upstart przetwarza
Pytanie: Czy mogę ponownie uruchomić wszystkie instancje naraz?
Aby rozpocząć moje robotników mogę zrobić:
initctl rozpocząć moi pracownicy
Które następnie pozwala mi robić:
pracownik cywilny initctl n = 1 pracownika (1) start/uruchomiony, proces 551
pracownik statusu initctl N = 2 pracownik (2) start/Uruchomiony, proces 552
Czy istnieje sposób, aby zrobić coś takiego:
initctl restart moi pracownicy
Chciałbym, aby móc ponownie uruchomić wszystkie instancje bez konieczności wiedzieć, ile z nich działa.
Oto moja moja-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
I 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
Zajęło mi trochę czasu, aby zrozumieć, co to znaczy, ale kiedy mam go ... * umysł dmuchane * – Evgeny
@Evgeny samo tutaj, haha. Jeśli tak jak ja i prawdopodobnie Jewgienij, spędziłeś tylko 5 minut próbując zrozumieć, co się tutaj dzieje: w zasadzie my-workers.conf spawnuje wiele skryptów i wyjść z wyprzedzeniem, ale każdy plik worker.conf ma teraz linię 'zatrzymaj się przy zatrzymywaniu moich pracowników ', więc kiedy spróbujesz zatrzymać proces, który już powstrzymał proces moich pracowników, robotnicy nadal będą go słuchać i umrzeć. Tak więc "ponowne uruchomienie" moich pracowników, nawet jeśli wcześniej tak naprawdę nie działało, skutkuje ponownym zabiciem robotników (zatrzymaniem) i ponownym uruchomieniem skryptu przed uruchomieniem (start), i ponownym uruchomieniem. – Mahn
Działa, ale jest dość hackish. 'service my-workers start' zawiesza się. Dokumentacja Upstart stwierdza, że "Wszystkie pliki zadań muszą zawierać albo skrypt przed uruchomieniem, albo skrypt post-stop. Nie oczekuje się, że zaczną proces, w rzeczywistości nie mogą tego zrobić". Może lepiej jest po prostu stworzyć kolejną pracę do zatrzymania lub ponownego uruchomienia pracowników. –