1

いくつかのログを grep し、出力を 1 つのテキスト ファイルに入れるシェル スクリプトを作成しました。基本的に、このスクリプトは 10 台の他のサーバーで実行され、出力テキスト ファイルは 経由でホスト サーバーにコピーされますscp。ここで、ホスト サーバーからすべてのスクリプトを一度に呼び出して、10 個すべてのログ ファイルを最小限の時間で (ほぼ並行して) 取得する必要があります。各サーバーのスクリプトが完了するまでに約 10 秒かかります。

ありがとう!!

4

4 に答える 4

1

GNU parallelを見たいと思うかもしれません。ここでClusterSSH述べたpconsoleように、また役に立つかもしれません。

どうしても独自のツールを作成したい場合は、このチュートリアルが役に立つかもしれません。

于 2012-08-18T20:23:36.393 に答える
0

ロギングをほぼ同時に開始するには、プロセスをバックグラウンドに送信します。

host_urls=( url1 ... url10 )
for u in ${host_urls[@]}; do
  ssh ... $u your_server_logging_script &
done

これにより発生する遅延は、ネットワークの不具合よりもはるかに小さいため、実際にサーバーで時刻を同期したり、余分なコードを記述したりせずに実行できる最善の方法です.

your_server_logging_scriptもちろん、ファイルを中央サーバーに戻すためのgrepとの呼び出しが含まれます。scpファイルに一意の名前を付けることを忘れないでください(たとえば、ホストのプレフィックスを付けます)。そうしないと、互いに上書きされます。

于 2012-08-18T20:03:11.557 に答える
0

http://sourceforge.net/projects/pdsh/のような分散シェルを使用できます。pdsh

于 2012-08-19T21:12:35.437 に答える
0

可能な解決策は、基本的にサーバーを ssh しようとするホストサーバー上にサブプロセスを作成することです。サーバー側では、基本的にログで実行される ~/.bash_profile または ~/.bashrc にシェルスクリプトを実行するコマンドを配置できます。 ssh の後にコマンドをパイプライン処理することもできます。指紋認証で問題が発生している場合は、ホスト キーをサーバーの .ssh フォルダー内の承認済みキーに追加できます。それは簡単にできるはずです。*サブプロセスを並行して開始できます

于 2012-08-18T19:51:24.937 に答える