24

たとえば、64 コアのサーバーがあり、md5sum内のすべてのファイルを計算し/mnt/data、結果をテキスト ファイルに保存する必要があるとします。

find /mnt/data -type f -exec md5sum {} \; > md5.txt

上記のコマンドの問題は、常に 1 つのプロセスしか実行されないことです。64 コアの能力を最大限に活用したいと考えています。理想的には、常に 64 の並列プロセスが実行されていることを確認したいと思いmd5ます (ただし、64 を超えないようにします)。

また。すべてのプロセスからの出力を 1 つのファイルに保存する必要があります。

md5sum注: 1 つのファイルを並行して計算する方法を探しているわけではありません。からのファイルがある限り、64 個の異なるファイルの 64 個の md5sums を並列に計算する方法を探していますfind

4

4 に答える 4

28

を使用しGNU parallelます。また、実装方法の例をいくつかここで見つけることができます。

find /mnt/data -type f | parallel -j 64 md5sum > md5.txt
于 2013-05-27T11:45:22.110 に答える
11

xargs も使用できます。一部のディストリビューションでは、パラレルよりも利用できる可能性があります。

-P は、生成されるプロセスの数を制御します。

find /mnt/data -type f | xargs -L1 -P24  md5sum > /tmp/result.txt
于 2014-04-02T20:49:40.250 に答える