私はすべてのシステムをupstartを使用してさまざまなアプリケーションプロセスを管理するように変換し始めています。私が常に見逃していることの1つは、stop
またはrestart
イベントでプロセスに異なる信号を送信する機能です。
たとえば、Webプロセスを nicorn で実行します。 Unicornには優れた信号処理APIがあります。プロセスを正常にリロードしたい場合は、マスターpidにUSR2シグナルを送信します。それらを正常にシャットダウンするには、QUITコマンドを送信します。 TERM(upstartのデフォルトの停止信号)は、即時シャットダウンを構成します。
別の例は Resque の使用です。ワーカーを正常にシャットダウンするために、QUIT信号を送信します。 TERMシグナルは、ワーカーの子がフォークされているかどうかに関係なく、即座にシャットダウンします。
Upstartはカスタムシグナルをサポートしていますか?どこにも見当たらないようで、「仕事用の間違ったツール」を使っているのではないかと心配です。
Ubuntu 10.04には kill signal
およびkill timeout
関連する信号とタイムアウト値を構成するパラメータ。 「リロード」信号はSIGHUP
にハードコードされています。
upstart
の新しいバージョンでは reload signal
parameter -詳細については、この質問に対する他の回答を参照してください。
Upstart v1.10.0以降、「リロード信号」を定義できます。
https://launchpad.net/upstart/1.x/1.10.
このバージョンは、v13.10以降のubuntuで利用できます...私は次の手順を使用してec2インスタンスをアップグレードしました。
https://askubuntu.com/questions/302762/upgrading-13-04-to-13-1
Rails + pumaを使用し、/ etc/init /app-1.confファイルでこのディレクティブを使用して正常にリロードします。
reload signal SIGUSR2