web-dev-qa-db-ja.com

SupervisorCTLを使用して特定のプロセスのみを再起動する方法は?

私は、process1、process2、...、process8という名前のsupervisordを使用していくつかのプロセスを実行しています。プロセス{1-4}を再起動したい場合、どのようにsupervisorctlでそれを行うことができますか?

96

スーパーバイザーは プロセスグループ をサポートします。プロセスを名前付きグループにグループ化し、それらをまとめて管理できます。

[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

supervisorctlコマンドは、グループ名で呼び出すことができます。

supervisorctl restart foo:

複数のプロセス名を使用する場合:

supervisorctl restart foo:cat1 cat2
159
mher

supervisorctlはコマンドラインで複数のプロセスを受け入れるため、シェルブレース拡張(Bashなど)を利用して複数のプロセスを制御できます。

supervisorctl restart process{1..4}

シェルによってに展開されます

supervisorctl restart process1 process2 process3 process4

明示的に入力したかのように。

2