我有一组服务器,每个服务器都有一堆可以被gzip压缩的文件。服务器都具有不同数量的核心。如何编写一个bash脚本来为每个内核启动一个gzip,并确保gzip不会压缩同一个文件?
答案 0 :(得分:67)
有一个多线程的gzip实现,pigz。由于它在多个线程上压缩一个文件,因此与一次压缩多个文件相比,它应该能够更有效地从磁盘读取。
答案 1 :(得分:58)
如果您使用的是Linux,则可以使用GNU的xargs来启动与核心一样多的进程。
CORES=$(grep -c '^processor' /proc/cpuinfo)
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9
答案 2 :(得分:6)
您可能需要考虑检查GNU parallel。我还发现这个video on youtube似乎正在寻找你想要的东西。