¿Cómo reiniciar solo ciertos procesos utilizando supervisorctl?
-
25-10-2019 - |
Pregunta
Estoy ejecutando algunos procesos usando Supervisord, llamado Process1, Process2, ..., Process8. Si quiero reiniciar el proceso {1-4}, ¿cómo puedo hacerlo con supervisorctl?
Solución
Supervisord es compatible grupos de procesos. Puede agrupar procesos en grupos nombrados y administrarlos colectivamente.
[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
Se puede llamar al comando supervisorCTL con un nombre de grupo:
supervisorctl restart foo:
así como con múltiples nombres de procesos:
supervisorctl restart foo:cat1 cat2
Otros consejos
Ya que supervisorctl
Acepta múltiples procesos en la línea de comandos, puede aprovechar la expansión de la abrazadera de shell (p. Ej., Bash) para controlar múltiples procesos:
supervisorctl restart process{1..4}
se expande por el caparazón dentro
supervisorctl restart process1 process2 process3 process4
Como si hubiera escrito eso explícitamente.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow