comment redémarrer uniquement certains processus à l'aide de supervisorctl?


107

J'exécute quelques processus en utilisant Supervisord, nommé process1, process2, ..., process8. Si je souhaite redémarrer le processus {1-4}, comment puis-je le faire avec supervisorctl?

Réponses:


177

supervisord prend en charge les groupes de processus . Vous pouvez regrouper les processus dans des groupes nommés et les gérer collectivement.

[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

La commande supervisorctl peut être appelée avec un nom de groupe:

supervisorctl restart foo:

ainsi qu'avec plusieurs noms de processus:

supervisorctl restart foo:cat1 cat2

47
Il est étonnant de constater à quel point il était non trivial de découvrir qu'un signe deux-points doit être ajouté lors de l'émission de commandes à un groupe de processus. Je vous remercie.
mafrosis

4
D'accord. Je pense supervisorctl restart foo:*que ce qui se passe est plus clair.
Tom

Donc, pour répondre directement à la question du PO, vous ne pouvez pas redémarrer directement un processus spécifique. Vous ne pouvez redémarrer que des groupes, ce qui nécessite une balise de groupe?
Cerin

@Cerin De mes propres tests, je suis arrivé exactement à la même conclusion. Parlant de façon anecdotique, j'ai eu tendance à voir un groupe à la fin des fichiers .conf contenant tous les processus. Comme observation répétée, cela n'avait aucun sens. Maintenant, c'est tout à fait logique :)
AlanSE

Vous avez fait ma journée :)
sumit

3

Comme supervisorctlaccepte plusieurs processus sur la ligne de commande, vous pouvez profiter de l'expansion des accolades shell (par exemple dans Bash) pour contrôler plusieurs processus:

supervisorctl restart process{1..4}

est étendu par la coque en

supervisorctl restart process1 process2 process3 process4

comme si vous l'aviez tapé explicitement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.