以指定的并行度并行压缩大量的文件

本文介绍了一种使用Shell脚本实现的按指定并行度压缩大量文件的方法。脚本通过读取fileList.txt文件中的文件名,根据当前运行的gzip进程数动态调整压缩任务,确保不超过预设的并行度(默认4)。当gzip任务完成时,通过信号机制通知父进程更新运行计数。文章还提到了在实际运行中可能遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

       背景:最近有一同事需要对一批文件进行压缩,文件比较大也比较多,希望能同时对多个文件进行压缩,同时还要求同时被压缩的文件的个数

要受控制,可以指定;这样做的目的是为了充分利用系统的资源,又不造成因为竞争资源而降低压缩的效率。为此我专门写了一个SHELL,来完成这个功能。觉得很有意识。所以拿出来和大家分享一下。如果能给大家一点点的启发或者

帮助,那将是我最大的荣幸!

 

       原理:遍历fileList.txt文件(该文件保存着要被压缩的文件的文件名),如果当前正在执行的gzip的数目少于预定值4,则执行gzip命令压缩

文件,如果已经超过预定值4,则休眠10秒钟。利用信号机制,当gzip执行完成的时候会向父进程发SIGCHLD信号,父进程捕获该信号后,将保存

正在执行的GZIP数目的变量runNum的值减一。

       代码:

################################################################

#!/bin/bash


set -bm  #必须执行该命令,不然会收不到信号
runNum=0

#信号处理函数
function traSIGCHLD(){
   echo 'a child exit'
   runNum=$((runNum-1))
}</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值