GNU parallel の機能を使用して、コマンドとリストを並列に実行し、すべて完了した後に吐き出すことができるようにしたいのですが、インストールしたくありません= GNUすべてのサーバー間で並列。
または、おそらくxargs
の並列バージョンですか?
GNU Parallelが行うことのksh実装はありますか?この場合、GNU Parallelが行うように順番に行う必要はありません-ちょうどすべての出力をパイプまたは保存できる限り、一時ファイルの使用も避けたいと思います。
複数のコアを備えたマシンで並列化する場合は、(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を使用して偶然に実装されました)。
見る parallel --embed
GNU Parallelを使用元のシェルスクリプトと同じものに埋め込みます。
parallel --embed > new_script
次に、new_scriptを編集します。