1

私のアプリケーションは、4つの固有のプロセスで構成されています。HAの理由から、各プロセスの2つのインスタンスが単一のLinuxホストで実行され、別のインスタンスが別のLinuxホストで実行されるように、それぞれのインスタンスを3つ開始します。これらのプロセスを定期的にポーリングする監視スクリプト(bashスクリプト)を作成しようとしています。私の主な課題は、ホスト名とプロセス名に依存するスクリプトを書くのは厄介に聞こえることです。たとえば、Linuxホストのprocess-A-1、process-B-1、process-A-2、process-B-2をIPアドレスAで監視し、Linuxのprocess-A-3を監視するスクリプトを書きたくありません。 IPホストアドレスB。

ホストとプロセス名に依存しない監視スクリプトを作成する1つの方法は、これらの各プロセスが開始されるときに、ミューテックス名を作成することです。たとえば、process-A-1はmutex.process-A-1というミューテックスを作成し、process-A-2はmutex.process-A-2というミューテックスを作成します。次に、スクリプトが実行する必要があるのは、mutex.process-A*のような名前のシステムでミューテックスを探すことだけです。次に、スクリプトはpsコマンドを使用して、これらのプロセスが実行されているかどうかを確認できます。

私の質問は、ミューテックス名との結合は大丈夫ですか?Linuxでこの問題を解決した別の方法はありますか?

4

1 に答える 1

1

私は個人的に、このすべてのプロセスをバックグラウンドで実行する bash スクリプトを作成し、それらの PID を呼び出した後に直接保存し、process1_pid=$!それぞれをバックグラウンドに送信した後に保存し、それらの pid を使用して監視する別のスクリプトをトリガーします。

PID を取得する他の方法はjobs、バックグラウンドに設定したすべてのジョブを一覧表示するコマンドを使用することjobs -pです。バックグラウンドにあるすべての PID を一覧表示します。ジョブを利用して、ジョブがまだ実行されているかどうかを確認することもできます。

http://www.gnu.org/software/bash/manual/bashref.html#Job-Control

より複雑で、プロセスが他の場所から作成されている場合は、常に特定のユーザーを使用してすべてを実行し、ユーザーごとps -uにフィルター処理することができます。

于 2012-09-28T16:50:13.950 に答える