jak zrestartować tylko niektóre procesy za pomocą supervisorctl?


107

Uruchamiam kilka procesów przy użyciu supervisord, nazwanych proces1, proces2, ..., proces8. Jeśli chcę ponownie uruchomić proces {1-4}, jak mogę to zrobić za pomocą supervisorctl?

Odpowiedzi:


177

supervisord wspiera grupy procesowe . Możesz grupować procesy w nazwane grupy i zbiorczo nimi zarządzać.

[unix_http_server]
file=%(here)s/supervisor.sock

[supervisord]
logfile=supervisord.log
pidfile=supervisord.pid

[program:cat1]
command=cat

[program:cat2]
command=cat

[program:cat3]
command=cat

[group:foo]
programs=cat1,cat3

[supervisorctl]
serverurl=unix://%(here)s/supervisor.sock

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

Polecenie supervisorctl można wywołać podając nazwę grupy:

supervisorctl restart foo:

a także z wieloma nazwami procesów:

supervisorctl restart foo:cat1 cat2

47
To niesamowite, jak nietrywialne było odkrycie, że przy wydawaniu poleceń grupie procesów trzeba dodać dwukropek. Dziękuję Ci.
mafroza

4
Zgoda. Myślę, że supervisorctl restart foo:*wyjaśnia to, co się dzieje.
Tom

Aby bezpośrednio odpowiedzieć na pytanie OP, nie można bezpośrednio ponownie uruchomić określonego procesu. Możesz ponownie uruchomić tylko grupy, które wymagają tagu grupy?
Cerin

@Cerin Z moich własnych testów doszedłem do tego samego wniosku. Mówiąc anegdotycznie, zwykle widziałem grupę na końcu plików .conf zawierających wszystkie procesy. Jako powtarzająca się obserwacja, nie miało to sensu. Teraz ma to sens :)
AlanSE,

Zrobiłeś mój dzień :)
sumit

3

Ponieważ supervisorctlakceptuje wiele procesów w wierszu poleceń, możesz skorzystać z rozwijania nawiasów klamrowych powłoki (np. W Bash), aby kontrolować wiele procesów:

supervisorctl restart process{1..4}

jest rozszerzany przez powłokę do

supervisorctl restart process1 process2 process3 process4

jakbyś to wpisał wprost.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.