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


107

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

回答:


177

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

[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

47
プロセスグループにコマンドを発行するときにコロンを追加する必要があることがわかったのは、それほど簡単なことではありません。ありがとうございました。
mafrosis

4
同意した。私supervisorctl restart foo:*は何が起こっているかをより明確にすると思います。
トム

したがって、OPの質問に直接答えるために、特定のプロセスを直接再起動することはできません。グループの再起動のみが可能で、グループタグが必要ですか?
Cerin

@Cerin私自身のテストから、まったく同じ結論が出ました。逸話的に言えば、すべてのプロセスを含む.confファイルの最後にグループが表示される傾向があります。繰り返し観察すると、これは意味がありませんでした。今では完全に理にかなっています:)
AlanSE

あなたは私の一日を作りました:)
sumit '14

3

以来supervisorctl、コマンドライン上で複数のプロセスを受け入れ、あなたは複数のプロセスを制御するために、シェルブレース展開(例えばバッシュ中)を利用することができます。

supervisorctl restart process{1..4}

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

supervisorctl restart process1 process2 process3 process4

あなたがそれを明示的にタイプしたかのように。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.