8

コンテキスト:

私は一連のサード パーティ デーモンを管理する Linux[1] システムを持っています。これらのデーモンとのやり取りは shell[2] init スクリプトに限定されています。つまり、{start|restart|stop|status} のみが利用可能です。

問題:

プロセスは、以前に実行されていたプロセスの PID を想定できます。プロセスのステータスは、その PID で実行中のプロセスの存在を検査することによってチェックされます。

プロセス A は PID 123 で実行され、その後終了し、プロセス B は PID 123 で初期化され、ステータス コマンドは非認証 (エラー) の「OK」で応答します。つまり、PID からプロセスの存在をチェックして、プロセスが実行中であることを確認するだけです。この PID を持つプロセスが存在する場合、それが問題のプロセスであると想定します。

提案された解決策:

  1. PID を使用してプロセスを調べ、その PID で実行されているコマンド/デーモンが期待どおりであることを確認します。このソリューションの問題は、コマンドと PID の両方が一致する必要があることです。したがって、複数ビットの情報を維持して同期を保つ必要があり、エラー/エッジ条件がさらに複雑になります。
  2. PID ファイルの作成時刻とプロセスの開始時刻を関連付けます。プロセスが PID ファイルの作成時刻の特定のデルタ内にある場合、コマンド/デーモンの実行が期待どおりであるとかなり確信で​​きます。

そのPIDで実行されているプロセスの存在を超えて、プロセス/PIDファイルの信頼性を承認する標準的な方法はありますか? つまり、私 (システムとして) は、あなた (プロセス) が実行されているかどうか、また、あなたが私が思っている人物であるかどうか (B ではなく A) を知りたいと考えています。

上記で提案された 2 番目のソリューションを実装することを選択したと仮定すると、PID 作成時間とプロセス開始時間の間のどの信頼区間/デルタが妥当ですか? ここで、合理的とは、タイプ 1 とタイプ 2 のエラーの間で妥協できることを意味します。

[1] CentOS/RHEL [2] バッシュ

4

3 に答える 3

5

ファイルの内容:

/proc/{PID}/cmdline

プロセスを開始するために使用されるコマンドラインです。それはあなたが必要とするものですか?

于 2012-09-07T12:56:21.883 に答える