2

この単純な問題で誰かが私を助けてくれることを願っています。このコマンドを並行して実行したい

windmill chrome test=./test http://www.google.ch

私は xargs で遊んでいて、インターネットで例を見ていました。ただし、前述のコマンドを並行して実行するための xargs コマンドを作成できませんでした。

私は次のことを試しました

echo "chrome test=./test http://www.google.ch" | xargs -n 1 -P 2 windmill

正しいコマンドを実行しなかったということは、出力が正しくないため、windmill が間違ったコマンドを実行したに違いないことを意味します (間違った引数を指定したための windmill のデフォルト出力)。

それにもかかわらず、ターミナル/pythonが「socket.error:[Errno 48]アドレスはすでに使用されています」と不平を言うという別の問題が発生しました。

そのため、たとえば 2 つのターミナルを開き、各ターミナルで風車コマンドを実行するだけで風車コマンドを並行して実行すると、機能します。

xargs が解決策でない場合は、正しい方法を特定していただければ幸いです:)

4

3 に答える 3

1

コマンドを並行して実行したいとおっしゃっています。これは、プログラム自体が内部で並列化されている場合にのみ実行できます。

ただし、できることは、複数のコマンドを並行して実行することです。これらを並行して実行したいとします。

windmill chrome test=./test http://www.google.ch
windmill chrome test=./test http://www.google.se
windmill chrome test=./test http://www.google.no
windmill chrome test=./test http://www.google.de

GNU Parallelを使用すると、次のことができます。

parallel windmill chrome test=./test http://www.google.{} ::: ch se no de

詳細については、イントロビデオをご覧ください:https ://www.youtube.com/playlist?list = PL284C9FF2488BC6D1そしてチュートリアル(man parallel_tutorial)をウォークスルーします。あなたはそれを愛してコマンドラインを使います。

それがあなたの望むものでない場合は、質問を言い換えてください。

于 2011-12-12T14:10:50.887 に答える
1

xargsあなたのコマンドは並列では実行されません。

ボーン互換シェルでこれを実行してみませんか?

for i in 1 2; do windmill chrome test=./test http://www.google.ch & done
于 2011-12-11T09:03:15.507 に答える
0

プログラムが最近リリースされたソケットにバインドする際に問題が発生する場合があることがわかりました。カーネルはセキュリティ上の理由からこれを防止しようとします。すぐに再バインドできるようにする必要がある場合は、おそらく SO_REUSEADDR を試すか、毎回別のポートにバインドする必要があります。

于 2011-12-12T08:21:59.730 に答える