como reiniciar apenas alguns processos usando supervisorctl?


107

Estou executando alguns processos usando supervisord, denominado process1, process2, ..., process8. Se eu quiser reiniciar o processo {1-4}, como posso fazer isso com o supervisorctl?

Respostas:


177

supervisord oferece suporte a grupos de processos . Você pode agrupar processos em grupos nomeados e gerenciá-los coletivamente.

[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

O comando supervisorctl pode ser chamado com um nome de grupo:

supervisorctl restart foo:

bem como com vários nomes de processo:

supervisorctl restart foo:cat1 cat2

47
É incrível como foi não trivial descobrir que dois pontos precisam ser acrescentados ao emitir comandos para um grupo de processos. Obrigado.
mafrose de

4
Acordado. Acho que supervisorctl restart foo:*deixa o que está acontecendo mais claro.
Tom

Portanto, para responder diretamente à pergunta do OP, você não pode reiniciar diretamente um processo específico. Você só pode reiniciar grupos, o que requer uma tag de grupo?
Cerin

@Cerin De meus próprios testes, cheguei exatamente à mesma conclusão. Falando anedoticamente, tenho tendência a ver um grupo no final dos arquivos .conf contendo todos os processos. Como observação repetida, isso não fazia sentido. Agora faz todo o sentido :)
AlanSE

Você fez meu dia :)
sumit de

3

Uma vez que supervisorctlaceita vários processos na linha de comando, você pode tirar proveito da expansão da chave do shell (por exemplo, no Bash) para controlar vários processos:

supervisorctl restart process{1..4}

é expandido pelo shell em

supervisorctl restart process1 process2 process3 process4

como se você tivesse digitado isso explicitamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.