как перезапустить только определенные процессы с помощью supervisorctl?


107

Я запускаю несколько процессов с помощью supervisord с именами process1, process2, ..., process8. Если я хочу перезапустить процесс {1-4}, как я могу сделать это с помощью supervisorctl?

Ответы:


177

supervisord поддерживает группы процессов . Вы можете группировать процессы в именованные группы и управлять ими коллективно.

[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

Команда supervisorctl может быть вызвана с именем группы:

supervisorctl restart foo:

а также с несколькими именами процессов:

supervisorctl restart foo:cat1 cat2

47
Удивительно, насколько нетривиально было узнать, что двоеточие нужно добавлять при выдаче команд группе процессов. Спасибо.
mafrosis

4
Согласовано. Я думаю supervisorctl restart foo:*, проясняет происходящее.
Tom

Поэтому, чтобы напрямую ответить на вопрос OP, вы не можете напрямую перезапустить определенный процесс. Можно только перезапускать группы, для чего нужен групповой тег?
Cerin

@Cerin Из моего собственного тестирования я пришел к такому же выводу. Говоря анекдотично, я обычно видел группу в конце файлов .conf, содержащую все процессы. Как неоднократное наблюдение, это не имело смысла. Теперь это имеет смысл :)
AlanSE

Вы сделали мой день :)
SUMIT

3

Поскольку supervisorctlпринимает несколько процессов в командной строке, вы можете воспользоваться расширением скобок оболочки (например, в Bash) для управления несколькими процессами:

supervisorctl restart process{1..4}

расширяется оболочкой в

supervisorctl restart process1 process2 process3 process4

как будто вы напечатали это явно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.