1

サーバーを実行するためのパフォーマンス テスト スイートを作成しています。今は手動で実行していますが、自動化したいと考えています。ターゲット サーバーで、サーバー メトリックをログに記録し、Enter キーを押すと停止する Python スクリプトを実行します。テスター マシンで、JMeter テストを繰り返す bash スクリプトを実行し、タイムスタンプを設定してログに名前を付け、テストを実行します。

bashスクリプトがプロセス全体を駆動するようにこれらを結び付けたいのですが、これを行う最善の方法がわかりません。ssh 経由で Python スクリプトを開始できますが、テストが完了したときに停止するにはどうすればよいですか? ssh でそれを行うことができれば、既存の構成をいじる必要はありません。これは大きなメリットです。python スクリプトは非常に単純で、それが役立つ場合は書き直してもかまいません。

4

1 に答える 1

1

おそらく最も簡単な解決策は、Python スクリプトをシグナルに応答させることです。もちろん、クリーンアップが必要ない場合はスクリプトを SIGKILL することもできますが、スクリプトで実際にシャットダウン要求を処理する方がクリーンに見えます。SIGHUP は人気のある選択肢かもしれません。ドキュメントはこちら

コマンドを使用してシグナルを送信できるためkill、スクリプトのpidがわかっている場合は、sshを介してシグナルを送信しても問題ありません。この問題の通常の解決策は、スクリプトの起動時に pid を /var/run のファイルに入れることです。start-stop-daemon(Debian/Ubuntu システムを使用している場合は、おそらく、ここで多くの単調な作業を行うユーティリティがあることに気付くでしょう。)

もう少しコード集約的な別のアプローチは、既知の場所に fifo (名前付きパイプ) を作成し、現在 stdin を使用しているように基本的に使用することです。サーバーはパイプからの入力を待機し、それが取得されたときに何かをコマンドとして認識し、コマンドを実行します (たとえば、「終了」)。これはあなたの目的にはやり過ぎかもしれませんが、単一のハンマー ヒットよりも明確なコミュニケーション チャネルであるという利点があります。

于 2012-09-22T04:43:17.420 に答える