バックグラウンドプロセスがクラッシュしたときにスクリプトを実行する

バックグラウンドプロセスがクラッシュしたときにスクリプトを実行する

私はSpring Bootを使用して作成されたアプリケーションを実行しています。しかし、最終的には時々それが崩れるのを見ます。 nohupを使って実行しています。このプロセスが停止したら、nohup.outをバックアップし、サーバーに競合を通知する電子メールを送信するスクリプトが実行されるようにフックを接続したいと思います。それを行う方法はありますか?

注:これは必須ではなく、情報提供のみです。私はUbuntuを使用しています

ベストアンサー1

奇抜な方法を思い出しました。カミール・マコロフスキー存在するこの回答 シェルコンテキストで連続コマンドを作成し、バックグラウンドアプリケーションをクリーンアッププロセスにリンクします。 「簡単な」方法は次のとおりです。

nohup sh -c "<Main Process>; <reporting process>" &

ここではnohup、基本プロセスを実行するシェルを非同期で実行し、(何らかの理由で)基本プロセスが終了した後にレポート/クリーンアッププロセスを(無条件に)実行します。より安定した解決策は、短いスクリプトを書くことです。

#!/bin/sh
もし<主要工程>
それから
    <正常終了処理>
その他
    <異常終了処理>
フィリピン諸島

または

#!/bin/sh
<主要工程>
大文字と小文字 "$?"
イサク

次にスクリプトを実行します。nohup foo.sh &

唯一の懸念が、いくつかの内部エラーが原因でアプリケーションが終了することである場合、これはおそらく最善の解決策です。特定のリスクがある場合その他プロセスが奇妙になり、複数の致命的なシグナルを送信すると(アプリケーションが終了するのを待つ)、シェルが爆発してクリーンアッププロセスを開始できない可能性があります。この場合を考えてみましょう。G-マン~の回答、これは、周期的に信号0をアプリケーションに送信する監視プロセスがあることを示す。プロセスがもう存在しないというエラーを受け取ると、クリーンアップ操作が開始されます。

おすすめ記事