複数ののインスタンスが常に実行されていることを確認するにはどうすればよいですか?Bashスクリプト - 実行中の複数のインスタンスを維持する
あるプログラムの4つのインスタンスが常に実行されていることを確認したいとします。 1つのインスタンスが終了すると、新しいインスタンスが開始されます。 5つのインスタンスが実行中の場合は、1つを強制終了する必要があります。
複数ののインスタンスが常に実行されていることを確認するにはどうすればよいですか?Bashスクリプト - 実行中の複数のインスタンスを維持する
あるプログラムの4つのインスタンスが常に実行されていることを確認したいとします。 1つのインスタンスが終了すると、新しいインスタンスが開始されます。 5つのインスタンスが実行中の場合は、1つを強制終了する必要があります。
これは本当にシェルの質問ではありません。アプローチが同じで、使用しているシェルが同じであるからです。
ベストプラクティスは、実行中のプロセス(ps
を使用)をチェックし、必要に応じて新しいものを開始するか、不要なものを強制終了する「ウォッチドッグ」を持つことだと思います。
同じような状況で使用した方法の1つは、定期的に(5分ごとに)ウォッチドッグを開始して作業をさせるcronジョブを作成することです。
このような間隔が長すぎる場合(つまり、毎分より頻繁に確認する必要がある場合など)、ウォッチドッグをループ内で連続して実行することができます。それでも、ウォッチドッグが随時制御されるcronジョブが必要になります。この場合は、daemonとして実行することを検討することもできます。