¿Cómo reiniciar solo ciertos procesos usando supervisorctl?


107

Estoy ejecutando algunos procesos usando supervisord, llamado process1, process2, ..., process8. Si quiero reiniciar el proceso {1-4}, ¿cómo puedo hacerlo con supervisorctl?

Respuestas:


177

supervisord apoya grupos de proceso . Puede agrupar procesos en grupos con nombre 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

El comando supervisorctl se puede llamar con un nombre de grupo:

supervisorctl restart foo:

así como con múltiples nombres de procesos:

supervisorctl restart foo:cat1 cat2

47
Es sorprendente lo nada trivial que fue descubrir que es necesario agregar dos puntos al emitir comandos a un grupo de procesos. Gracias.
mafrosis

4
Convenido. Creo que supervisorctl restart foo:*aclara lo que está sucediendo.
Tom

Entonces, para responder directamente a la pregunta del OP, no puede reiniciar directamente un proceso específico. ¿Solo puede reiniciar grupos, lo que requiere una etiqueta de grupo?
Cerin

@Cerin De mis propias pruebas, llegué exactamente a la misma conclusión. Hablando de manera anecdótica, he tendido a ver un grupo al final de los archivos .conf que contienen todos los procesos. Como observación repetida, esto no tenía sentido. Ahora tiene mucho sentido :)
AlanSE


3

Dado que supervisorctlacepta múltiples procesos en la línea de comando, puede aprovechar la expansión de llaves de shell (por ejemplo, en Bash) para controlar múltiples procesos:

supervisorctl restart process{1..4}

es expandido por el caparazón en

supervisorctl restart process1 process2 process3 process4

como si lo hubiera escrito explícitamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.