問題タブ [gnu-parallel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1791 参照

bash - GNU 並列での SCP の実行

SCP を含むいくつかのコマンドを並行して実行する必要があります。このために、GNU Parallel を使用しています。問題は、パスワードを SCP に渡す方法がわからないことです。これは私が実行しているものに似た行です:

また、ls3 つのファイルが見つかった場合、scp は同時に 3 回パスワードを要求し、最後のプロセスにパスワードを入力してプロンプトを表示することしかできません。

公開鍵を使用して接続するこの問題を一時的に解決しましたが、会社のポリシーにより、これは将来のオプションではありません。SCP のマニュアル ページを読みましたが、オプションが見つかりませんでしたが、Parallel にはパスワードを入力できるオプションがあるはずだと確信しています。

誰かがこれを解決する方法を知っていますか?

編集:パスワードを要求するたびにパスワードを提供できるようparallelに、パスワードを伝える方法があるかどうか知りたいです。scp多分このようなもので:

ただし、のリダイレクトSTDINが forであり、 orではscpないことを指定します。 lsparallel

0 投票する
2 に答える
7873 参照

bash - 分割でGNUParallelを使用する

かなり巨大なファイルをpostgresqlデータベースにロードしています。これを行うには、最初にファイルで使用splitして小さいファイル(それぞれ30Gb)を取得し、次にとを使用して小さいファイルをデータベースにロードしGNU Parallelますpsql copy

問題は、ファイルを分割するのに約7時間かかり、その後、コアごとにファイルのロードを開始することです。必要なのは、splitファイルの書き込みが完了するたびにファイル名をstd出力に出力するように指示する方法です。これにより、ファイルをパイプで送信し、書き込みが完了Parallelするとファイルのロードを開始します。splitこのようなもの:

マニュアルページを読みましたが、split何も見つかりません。splitまたは他のツールでこれを行う方法はありますか?

0 投票する
1 に答える
1535 参照

cluster-computing - リモート クラスタでの古い NFS ファイル ハンドルの問題

ngspiceというツールを使用して一連のシミュレーションを実行する必要があります。100万回のシミュレーションを実行したいので、それらをマシンのクラスター (マスター + 開始するスレーブ、それぞれ 12 コア) に分散しています。

コマンドは次のとおり ngspice deck_1.spです。ngspice deck_2.sp等。、

ステップ 1: Python スクリプトを使用して、これらの sp ファイルを生成します。

ステップ 2: Python はGNU 並列を呼び出してマスター/スレーブ全体に sp ファイルを配布し、ngspice を使用してシミュレーションを実行します

ステップ 3: 結果を後処理します (Python スクリプト)。

ディスク容量を節約するために、一度に 1000 個のファイルのみを生成して処理します。したがって、100 万個のファイルがシミュレートされるまで、上記のステップ 1 から 3 がループで繰り返されます。

今、私の問題は次のとおりです。

初めてループを実行するときは問題ありません。1000 回のシミュレーションが完了するまで、ファイルはマスター/スレーブ全体に分散されます。ループが 2 回目に始まると、既存の sp ファイルを消去して再生成します (ステップ 1)。ここで、ステップ 2 を実行すると、奇妙な理由でいくつかのファイルが検出されません。いくつかのデバッグの後、ステップ1で作成された特定のspファイルに対して、「古いNFSファイルハンドル」および「そのようなファイルまたはディレクトリdeck_21.spはありません」などのエラーが表示されます。

Python スクリプトを一時停止lsし、ディレクトリで ' ' を実行したところ、ファイルが実際に存在することがわかりましたが、エラーが指摘しているように、古い NFS ファイル ハンドルが原因です。このリンクでは、クライアントなどを再マウントすることをお勧めしますが、マウントする管理者権限がないマシンにログインしています。これを解決する方法はありますか?

ありがとう!

0 投票する
1 に答える
575 参照

parallel-processing - GNU Parallel: リモート サーバーに送信される最初のジョブを遅らせる

データ (100 のリモート サーバーに分散された 100,000 のジョブ) を中央データベースにインポートする gnu 並列スクリプトがあります。最初のジョブは、ほぼ同時に終了するため、中央データベースをバタンと閉めています。その後の仕事は次第に広がり、同時に輸入しようとはしなくなりました。

リモート サーバーごとに最初のジョブの実行を遅らせる方法はありますか? したがって、スクリプトは「今、サーバー 1 に対してプロセス #1 を実行し、サーバー 2 に対してプロセス #2 を 5 秒で実行し、サーバー 3 に対してプロセス #3 を 10 秒で実行し、サーバー 4 に対してプロセス #4 を 20 秒で実行します。 ..」。最初のバッチが各サーバーに送信された後、残りのプロセスができるだけ早く実行されるようにします。

これにはパラメータがありますか?

0 投票する
2 に答える
136 参照

parallel-processing - 最大数のリモート サーバーの使用

100 台のリモート コンピューターにコマンドを配布しようとしていますが、コマンドが 16 台のリモート コンピューターにしか送信されていないことに気付きました。私のローカル マシンには 16 個のコアがあります。100 台ではなく 16 台のリモート コンピューターのみを並列で使用するのはなぜですか?

parallel --eta --sshloginfile list_of_100_remote_computers.txt < list_of_commands.txt

0 投票する
1 に答える
5536 参照

bash - 大量のコマンド配列を GNU Parallel に供給する方法は?

システムに保存されているファイルを並行して検索するためにGNU Parallelを使用できるかどうかを評価しています。システムには、1 年のうち 1 日 (doy) ごとに 1 つのファイルしか存在できません (したがって、1 年あたり最大 366 ファイル)。システムに 3660 個のファイル (約 10 年分のデータ) があるとします。システムは、マルチ CPU マルチコア Linux またはマルチ CPU Solaris である可能性があります。

ファイルに対して実行する検索コマンドを配列に格納しています (ファイルごとに 1 つのコマンド)。そして、これは私が現在行っていることです(bashを使用)が、並行して開始する検索の数を制御できません(3660のすべての検索を一度に開始したくないことは間違いありません):

使用する場合parallel(最大 CPU/コアを自動的に計算し、非常に多くの検索のみを並行して開始します)、配列cmdsを並行して再利用し、上記のコードを書き直すにはどうすればよいですか? もう 1 つの方法は、すべてのコマンドをファイルに書き込んでから実行することです。cat cmd_file | parallel

0 投票する
1 に答える
955 参照

linux - グループ キャプチャによる並列 sed

大きなファイルを処理する必要があり、sed、sort などを使用するときに複数のコア プロセッサを使用しようとする並列コマンドについて読んでいます。そのため、最初に 4 行ごとに最初の行を変更したいと考えました (この種のファイルの命名規則 - FastQ 形式のため)。

たとえば、これは 4 つのグループで、最初の行を変更したいと思います。

次のコマンドで、作業を完了しました。

ただし、 parallel を使用すると、グループ キャプチャ ブラケットが認識されないようです。

バックスラッシュを削除するか、 sed -r を使用すると、コマンドは次のように伝えます。

誰かがこれに光を当てることができますか?

どうもありがとうございます

0 投票する
3 に答える
12054 参照

bash - bashでファイルから読み取った配列を使用してwhileループを並列化する

Bash で while ループを次のように処理しています。

参照用に、この構造を持つファイルから読み取ります。

など (タブ区切り)。

GNU 並列を使用して (エントリが多く、処理が遅くなる可能性があるため) このループを並列化したいのですが、ここで行うように、各行を配列に割り当てる方法が明確ではありません。

可能な解決策は何ですか (GNU 並列作業の代替手段も同様です)?

0 投票する
1 に答える
930 参照

bash - 親に送信されたシグナルを自動的に受信する複数の子プロセスを起動する方法

並列の子プロセスを起動する Bash スクリプトを作成したいと考えています。子スクリプトが親プロセスに送信されるシグナルを受信できるようにする方法はありますか?

子プロセスを起動する方法は大まかに次のとおりですが、これは私のシグナリング基準を満たしていません。

これは ( を使用する) C プログラムで自動的に機能するため、シグナル転送fork/execを使用しなくても可能であると私は信じています。trap

これに対する 1 つの回避策は、 を使用することGNU-parallelです。xargsそのメカニズムが何であるかはわかりませんが、ループをスタイル構文 に再構築する意思がある限り、この問題は解決します。オプションを使用しても問題は解決GNU-parallelしません。--semaphore

答えはここにあると思いますが、それを Bash: Signal sent to both child and parent processに変換する方法がわかりません。

0 投票する
1 に答える
1156 参照

bash - スクリーンセッションの引数でGNUを並行して実行するには?

シェル スクリプトで複数のスクリーン (コマンド) セッションを並行して実行する必要がありますが、GNU パラレルがスクリーン引数で動作しているようです。例えば:

正常に動作しているため、parallel は両方の引数を date コマンドに渡します。しかし:

両方のコマンドを教えてくれます

よく見ると、「d」引数の前の - が削除されています。多分私は明らかなものを見逃していますか?