come riavviare solo alcuni processi utilizzando supervisorctl?


107

Sto eseguendo alcuni processi usando supervisord, denominato process1, process2, ..., process8. Se voglio riavviare il processo {1-4}, come posso farlo con supervisorctl?

Risposte:


177

supervisord supporta i gruppi di processi . È possibile raggruppare i processi in gruppi denominati e gestirli collettivamente.

[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

Il comando supervisorctl può essere chiamato con un nome di gruppo:

supervisorctl restart foo:

così come con più nomi di processo:

supervisorctl restart foo:cat1 cat2

47
È sorprendente quanto sia stato non banale scoprire che è necessario aggiungere due punti quando si impartiscono comandi a un gruppo di processi. Grazie.
mafrosis

4
Concordato. Penso che supervisorctl restart foo:*renda più chiaro ciò che sta accadendo.
Tom

Quindi, per rispondere direttamente alla domanda dell'OP, non è possibile riavviare direttamente un processo specifico. Puoi solo riavviare i gruppi, che richiede un tag di gruppo?
Cerin

@Cerin Dai miei test, sono arrivato esattamente alla stessa conclusione. Parlando in modo aneddotico, ho avuto la tendenza a vedere un gruppo alla fine dei file .conf contenente tutti i processi. Come osservazione ripetuta, questo non aveva senso. Ora ha perfettamente senso :)
AlanSE

Mi hai reso la giornata :)
sumit

3

Poiché supervisorctlaccetta più processi sulla riga di comando, puoi sfruttare l'espansione del tutore di shell (ad esempio in Bash) per controllare più processi:

supervisorctl restart process{1..4}

viene espanso dalla shell in

supervisorctl restart process1 process2 process3 process4

come se l'avessi digitato esplicitamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.