一尘不染

具有所有核心的Gzip

linux

我有一组服务器,每个服务器都装有一堆可以压缩的文件。服务器均具有不同数量的核心。如何编写bash脚本为每个核心启动gzip,并确保gzip没有压缩相同的文件?


阅读 318

收藏
2020-06-07

共1个答案

一尘不染

如果您使用的是Linux,则可以使用GNU的xargs启动与内核一样多的进程。

CORES=$(grep -c '^processor' /proc/cpuinfo)
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9
  • find -print0 / xargs -0保护文件名中的空格
  • xargs -n 1表示每个文件一个gzip进程
  • xargs -P指定作业数
  • gzip -9表示最大压缩
2020-06-07