3

私はいくつかのプロセスを監視するためにmonitを使用しています。これらのプロセスには、パッセンジャー インスタンスと、パッセンジャー インスタンスの pidfile を生成するために私が作成したデーモンが含まれます。Monit はこれらのプロセスを問題なく開始します。それは彼らを止めません。以下は、デーモンの Monit 構成です。

check process passenger_monitor with pidfile <%= passenger_monitor_pid %>
   group <%= application %>
   start program = "/bin/su - rails_apps -c 'source /home/rails_apps/.rvm/scripts/rvm; /home/rails_apps/passenger_monitor.rb'"
   stop program = "/bin/kill `/bin/cat <%= passenger_monitor_pid %>`"

capistrano 経由で生成される erb テンプレートです。最小限の環境でルートとしてターミナル経由で停止コマンドを実行すると機能しますが、Monit にプロセスの停止を要求すると、次のエラーが発生します。

[ADT Sep 17 10:38:31] error    : 'passenger_monitor' failed to stop

考えられることはすべて試しました。stop コマンドの出力のログが見つからないか、生成されません。

4

1 に答える 1

21

を使用してサービスを停止しようとすると、同じ問題が発生します

stop program = "/bin/kill `/bin/cat /var/run/pusher.pid`"

フラグをオンにして-Iv、デバッグ出力を表示できます。

monit -Iv

または、monit がバックグラウンドで実行されている間に手動で検証することもできます。

monit validate

彼らは両方とも示しています

'api-pusher-service' stop: /bin/kill
kill: can't find process "`/bin/cat"
kill: can't find process "/var/run/pusher.pid`"

これで問題は解決しました

stop program = "/bin/bash -c '/bin/kill `/bin/cat /var/run/pusher.pid`'"
于 2012-12-18T21:34:33.160 に答える