問題タブ [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.
bash - GNU 並列でコマンド ライン引数を分割する
使用GNU parallel
: http://www.gnu.org/software/parallel/
2 つの引数を取るプログラムがあります。
ファイル名のペアを生成するスクリプトを使用していますが、スクリプトの結果がペアではなく単一の文字列であるため、問題が発生します。お気に入り:
GNU parallel
にはたくさんのトリックがあるようですが、セパレーターの周りでテキストを分割するためのトリックがあるのではないかと思います:
簡単な回避策は、prog で引数を手動で分割することですが、それが可能かどうか知りたいですGNU parallel
。
linux - GNU 並列での「find」と「ls」
GNU parallel
多くのファイルをWebサーバーに投稿するために使用しようとしています。私のディレクトリには、いくつかのファイルがあります。
そして、私は次のようなシェルスクリプトを持っています:
スクリプトには他にもいくつかありますが、これは最も単純な例です。次のコマンドを実行しようとしました。
これは、GNU parallel
ページがディレクトリ内のファイルを操作する「通常の」方法として示しているものです。これはファイルの名前をスクリプトに渡すようですが、curl は渡されたデータ ファイルを読み込めないと文句を言います。
それは正常に動作します。引数をスクリプトに渡す方法ls
との間に違いはありますか? find
または、そのスクリプトで何か追加する必要がありますか?
shell - ユーザーがスクリプトを実行するときにユーザーのシェルを無視する方法
ユーザーごとにスクリプトを実行する必要があります。そのユーザーのシェルがファイル内に変更され/script/script1
ました。/etc/passwd
スクリプトを実行すると、SHELLが/ script/script1として取得されます。
ssh - GNU 並列を使用しているときに、新しい発信 ssh 接続の速度を制限するにはどうすればよいですか?
背景: OpenSSHのデフォルト設定MaxStartups
は 10:30:60 で、ほとんどの Linux ディストリビューションはこのデフォルトを維持しています。つまり、sshd が新しい着信接続の 30% をドロップし始める前に、キーを交換して認証する ssh 接続は一度に 10 個しか存在できず、認証されていない接続が 60 個になると、すべての新しい接続がドロップされます。接続がセットアップされると、この制限に対してカウントされません。たとえば、この質問を参照してください。
問題: GNU 並列を使用して、多数のバックエンド ノードで大量のデータ処理を実行しています。単一のフロントエンド マシンからこれらのノードにアクセスする必要があり、ssh:s を使用しProxyCommand
てバックエンドに透過的にアクセスするためのトンネルを設定しています。ただし、フロントエンドが一度に認証できる数よりも多くの ssh 接続が並列に生成されているため、認証されていない接続の最大制限に常に達しています。
ControlMaster auto
フロントエンドへの単一の接続を再利用しようとしましたが、うまくいきませんでした。
質問:新しい ssh 接続が開かれる速度を制限するにはどうすればよいですか? 特定の時間に開いている認証されていない接続の数を制御し、別の接続が認証されるまで新しい接続を遅らせることはできますか?
environment-variables - GNUParallelで環境変数を継承する
GNUParallelで環境変数を継承したいと思います。いくつかの「スクリプト」(実際には、GNU Parallelで使用するために設計されたコマンドのリスト)があり、それぞれが異なる外部プログラムを呼び出す数百行あります。ただし、これらの外部プログラム(私の制御不能)では、実行する前にいくつかの環境変数を設定する必要があります。
それらをローカルに設定/エクスポートすることは役に立たないようで、この情報をプロファイルに追加する方法がわかりません。
ドキュメントにはこれが何も含まれていないようで、同様のSOページでは、コマンドをスクリプトでラップすることを提案しています。ただし、これはエレガントでない解決策のようです。現在の環境をエクスポートする方法、またはスクリプトで必要な変数を指定する方法はありますか?
ありがとう!
shell - GNU 並列処理
を使用して実行したい次のスクリプトがありますGNU parallel
。これは、実行時に必要な for ループですn
。を使用してこれを行うにはどうすればよいGNU parallel
ですか?
bash - bash -c とグロビングの使用
bash シェルから実行すると正常に動作するコマンドで gnu-parallel を実行していますが、-c フラグを使用して bash で並列実行するとエラーが返されます。これは、私が使用している特別なグロビング表現に関係していると思います。
これで正常に戻ります。
フラグを有効にすると、コマンドは失敗します
マニュアルでは、bash が文字列の引数を読み取るために -c を呼び出すことのみを指定していますが、何か不足していますか?
編集: gnu-parallel 文字列から実行するにはこれが必要なので、最終的な結果のコマンドは /bin/bash -c "Some Command" で実行できる必要があることを追加する必要があります。
linux - GNU 並列負荷分散
クラスタ上で CPU を集中的に使用する並列ジョブを実行する方法を見つけようとしています。私の目標は、コアごとに 1 つのジョブをスケジュールすることです。これにより、スケジュールが設定されると、すべてのジョブが 100% の CPU 使用率になることが期待されます。これは、これまでに思いついたものです。
ファイル build_sshlogin.sh
このスクリプトは、GNU 並列で次のように使用されます。
この手法の問題点は、誰かがクラスター内のサーバーで CPU を集中的に使用する別のジョブを開始した場合、CPU 使用率を確認せずに、スクリプトが使用中のコアにジョブをスケジュールしてしまうことです。さらに、最初のジョブが終了するまでに CPU 使用率が変化した場合、新しく解放されたコアは、残りのジョブの GNU 並列によるスケジューリングに含まれません。
したがって、私の質問は次のとおりです。各ジョブをスケジュールする前に、GNU に並列に空きコア/サーバーを再計算させる方法はありますか? 問題を解決するための他の提案は大歓迎です。
注: 私のクラスターでは、すべてのコアの周波数が同じです。誰かが異なる周波数を説明するために一般化できる場合は、それも歓迎します.
gnu-parallel - bashgnu並列argfile構文
GNU parallelを発見したばかりですが、単純な並列タスクの実行に問題があります。複数の値で実行しているシミュレーションがあり、コマンドライン引数を使用して並列に実行するように分割したいと思います。ドキュメントから、コマンドをフィードしたいさまざまな引数parallel mycommand :::: myargfile
を含むを並行して実行できるようです。myargfile
ただし、argsをリストする方法についての情報は見当たらず、次のように機能すると想定しましたmyargfile
。
mycommand --pmin 0 --pmax 0.1
問題なく実行されます。しかし、私が実行するparallel mycommand :::: myargfile
と、error: unknown option pmin 0 --pmax 0.1
(キャッチされてデコードされた礼儀ブーストプログラムオプション)が得られます。 parallel echo :::: myargfile
引数を正しく出力します。これは、プログラムが読み取れず、標準のbashスクリプトのようにフィードされない文字列にラップされているかのようです。
どうしたの?どうすればこれを機能させることができますか?
parallel-processing - 2 つの引数を持つ GNU 並列
$hosts_string
次の形式で呼び出される変数を持つ C シェル スクリプトがあります。
$chrs_string
次の形式の変数もあります。
$inputFn
また、処理する必要があるテキスト ファイルを指定するという変数もあります。
私がやりたいのは、入力ファイル名の引数として、各ホストが のdoStuff
各メンバーに対して呼び出されるコマンド$chrs_string
を実行することです。$inputFn
私は次のことを試しました:
これが機能する場合、コマンドからの出力としてchr1
ファイルが作成されるはずですが、何も得られません。Parallel はエラーを発行せずに完了しますが、出力はありません。chrM
doStuff
を使わなくてもコマンド自体は正常に動作するparallel
ので、コマンドではなく、 に引数を指定する方法ですparallel
。
これを確認するために、次のことを試しました。
これが機能し、(たとえば)である場合、 (たとえば)次の文字列を含むというファイルを取得します。$inputFn
/foo/bar
chr1
と の各組み合わせを正しくparallel
ループするようにコマンドを調整するにはどうすればよいですか?$chrs_string
$inputFn