Cara menentukan berbagai sinyal stop / restart dengan pemula

8

Saya mulai mengubah semua sistem kami untuk menggunakan pemula untuk mengelola berbagai proses aplikasi kami. Satu hal yang selalu saya lewatkan adalah kemampuan untuk mengirim sinyal berbeda ke proses stopatau restartperistiwa.

Misalnya, kami menjalankan proses web kami dengan Unicorn . Unicorn memiliki API penanganan sinyal yang bagus. Ketika saya ingin memuat ulang proses dengan anggun saya mengirim sinyal USR2 master pid. Untuk mematikannya dengan anggun saya mengirim perintah QUIT. TERM (sinyal berhenti default pemula) merupakan shutdown langsung.

Contoh lain menggunakan Resque . Untuk mematikan pekerja dengan anggun saya mengirimkannya sinyal QUIT. Sinyal JANGKA lagi menyebabkan shutdown segera, apakah anak pekerja itu bercabang dua atau tidak.

Apakah pemula mendukung sinyal khusus? Sepertinya saya tidak dapat menemukannya di mana pun, yang membuat saya khawatir bahwa saya menggunakan "alat yang salah untuk pekerjaan itu".

penduduk setempat
sumber

Jawaban:

4

Ubuntu 10,04 hadir dengan versi awal 0.6.6 yang memiliki kill signaldankill timeout parameter yang akan mengkonfigurasi nilai sinyal dan batas waktu yang relevan. Sinyal "reload" dikodekan ke SIGHUP.

Versi yang lebih baru upstartmengenalkan reload signalparameter - lihat jawaban lain untuk pertanyaan ini untuk perincian lebih lanjut.

the-wabbit
sumber
Senang mengetahui, tidak yakin mengapa sinyal reload dikodekan dengan keras, tetapi saya rasa saya harus hidup dengan itu untuk saat ini.
localshred
Menurut jawaban diclophis di bawah, ini sekarang dimungkinkan melalui reload signal SIGUSR2, tetapi membutuhkan pemula v 1.10.0.
ghayes
6

Mulai dari v1.10.0 pemula Anda dapat mendefinisikan "sinyal isi ulang".

https://launchpad.net/upstart/1.x/1.10.0

Versi ini tersedia di ubuntu mulai v13.10 ... Saya menggunakan instruksi ini untuk memutakhirkan instance EC2 saya:

/ubuntu/302762/upgrading-13-04-to-13-10

Saya menggunakan rails + puma dan melakukan reload yang anggun dengan direktif ini di file /etc/init/app-1.conf saya:

reload signal SIGUSR2
diklofis
sumber