比方说,我有一个 64 核服务器,我需要计算 /mnt/data
中所有文件的 md5sum
,并将结果存储在文本中文件:
find /mnt/data -type f -exec md5sum {} \; > md5.txt
上述命令的问题是,在任何给定时间只有一个进程运行。我想充分利用我的 64 核的全部功能。理想情况下,我想确保在任何给定时间,有 64 个并行 md5
进程正在运行(但不超过 64 个)。
还有。我需要将所有流程的输出存储到一个文件中。
注意:我不是在寻找一种方法来并行计算一个文件的 md5sum
。我正在寻找一种方法来并行计算 64 个不同文件的 64 个 md5sums,只要有任何文件来自 find
。
最佳答案
使用GNU parallel
.您还可以找到更多有关如何实现它的示例 here .
find /mnt/data -type f | parallel -j 64 md5sum > md5.txt
关于Bash:在许多文件上并行化 md5sum 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16772186/