bagaimana cara me-restart hanya proses tertentu menggunakan supervisorctl?


107

Saya menjalankan beberapa proses menggunakan supervisord, bernama process1, process2, ..., process8. Jika saya ingin memulai ulang proses {1-4}, bagaimana saya dapat melakukannya dengan supervisorctl?

Jawaban:


177

supervisord mendukung kelompok proses . Anda dapat mengelompokkan proses ke dalam grup bernama dan mengelolanya secara kolektif.

[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

perintah supervisorctl dapat dipanggil dengan nama grup:

supervisorctl restart foo:

serta dengan beberapa nama proses:

supervisorctl restart foo:cat1 cat2

47
Sungguh menakjubkan betapa tidak sepele untuk mengetahui bahwa titik dua perlu ditambahkan saat mengeluarkan perintah ke grup proses. Terima kasih.
mafrosis

4
Sepakat. Saya pikir supervisorctl restart foo:*membuat apa yang terjadi lebih jelas.
Tom

Jadi untuk langsung menjawab pertanyaan OP, Anda tidak bisa langsung memulai kembali proses tertentu. Anda hanya dapat memulai ulang grup, yang memerlukan tag grup?
Cerin

@Cerin Dari pengujian saya sendiri, saya sampai pada kesimpulan yang sama persis. Berbicara secara anekdot, saya cenderung melihat grup di akhir file .conf yang berisi semua proses. Sebagai pengamatan yang berulang, ini tidak masuk akal. Sekarang masuk akal :)
AlanSE

Anda membuat hari saya :)
Sumit

3

Karena supervisorctlmenerima banyak proses pada baris perintah, Anda dapat memanfaatkan ekspansi brace shell (misalnya di Bash) untuk mengontrol banyak proses:

supervisorctl restart process{1..4}

diperluas oleh cangkang menjadi

supervisorctl restart process1 process2 process3 process4

seolah-olah Anda telah mengetiknya secara eksplisit.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.