2016-10-25 5 views
0

私はMonitを使用して監視しているプロセスを持っています。何らかの理由でプロセスが停止した場合は、シェルスクリプトを使用してSlack通知を送信し、再起動する必要があります。この動作は "存在しない"ディレクティブでは機能しません。最後のものは実行され、前のものは無視されます。以下のコード例:Monitの2番目の「存在しない」は最初のものを上書きします

check process xyz with pidfile /var/run/xyz.pid 
    start program = "/etc/init.d/xyz start" with timeout 60 seconds 
    stop program = "/etc/init.d/xyz stop" 
    if does not exist then restart 
    if does not exist then exec "/opt/somescript.sh" 

スクリプトを実行しますが、再起動しません。それはドキュメントから、これがどのように動作するかのようにも見えます。これを実現する他の方法。ドキュメントの参照(正確には明らかではないが、実際の動作に似ている):

If not defined, it defaults to a restart action. 
You can override the default action with the following statement: 

答えて

0

私の推測では、デフォルトのアクションであるドキュメントごとに、プロセスを再起動するように既にある、とあなたはexecアクション

でこれをオーバーライドしています

クリーナーの方法は、somescript.shの中に再起動スクリプトを追加することです。

あなたがいることをしたくない場合は、このように、ひとつのパッケージ内に2つのアクションを組み合わせることができます。

if does not exist then exec "/etc/init.d/xyz restart && /opt/somescript.sh" 
+0

申し訳ありませんが、質問を入力している間に私の側からちょうどタイプミスですが、今修正しました –

+0

ああ、私は参照してください。私は答えを更新しました。おそらく、再起動とスクリプトを代わりに1つのアクションにするのが最適です。 – Ulugbek

+0

私はexecで2つのコマンドを呼び出し、&&で区切っても、最初のものだけを呼び出します。私は場所を変更することでこれをテストしましたが、常に1つのコマンドだけが呼び出されます! –

0

私はMONITはあなたが二度同じ文を持ってすることはできませんと信じています。 somescript.shにプロセスを再起動する際にスクリプトを記述する必要があります。

関連する問題