web-dev-qa-db-ja.com

貧乏人のGNU並列実装ksh?

GNU parallel の機能を使用して、コマンドとリストを並列に実行し、すべて完了した後に吐き出すことができるようにしたいのですが、インストールしたくありません= GNUすべてのサーバー間で並列。

または、おそらくxargsの並列バージョンですか?

GNU Parallelが行うことのksh実装はありますか?この場合、GNU Parallelが行うように順番に行う必要はありません-ちょうどすべての出力をパイプまたは保存できる限り、一時ファイルの使用も避けたいと思います。

8
Nitrodist

複数のコアを備えたマシンで並列化する場合は、(GNU)xargsを使用できます。例:

echo seq_[0-9][0-9].gz | xargs -n 1 -P 16 ./crunching

意味:xargsは、プロセスごとにstdinからの1つのトークンを使用して、./crunchingと並行して最大16のプロセスを開始します。

splitをxargsと組み合わせて使用​​することもできます。

または、ジョブ実行用の単純なMakefileを作成して、make -f mymf -j $CORESを呼び出すこともできます(このソリューションには一時ファイルが必要です)。

PS:GNU並列マニュアルには、 xargs を含む他のツールとの比較も含まれています。そして make 、興味深いことに彼らはこう書いています:

(GNU parallelの非常に初期のバージョンは、make -jを使用して偶然に実装されました)。

6
maxschlepzig

見る parallel --embed GNU Parallelを使用元のシェルスクリプトと同じものに埋め込みます。

parallel --embed > new_script

次に、new_scriptを編集します。

0
Ole Tange