如何用简单的方法控制脚本的线程

sh/bash/dash/ksh/zsh等Shell脚本
回复
yubinalice
帖子: 197
注册时间: 2015-12-23 16:20
系统: ubuntu 16.04

如何用简单的方法控制脚本的线程

#1

帖子 yubinalice » 2016-02-29 22:54

如题,

比如现在我有一个4核的CPU,

现在我有100个压缩包,

所以我需要写一个脚本,四个线程同时执行,如此来提高效率。

for tar in *
do
tar xf $tar
done

如此执行的话,就会一个一个的执行,

但是如果加上&来执行又会同时执行所有,

所以有没有什么办法可以写出一个4线程解压缩的脚本?

不要用网上那个fifo的方法。

那个方法对于目前的我来说,比较复杂,我看不懂里面的原理。

最好可以用类似设置环境变量的方式来完成。

我可能需需要分多次下载大量的压缩包。

简单的讲,我希望类似于写一个可以在本shell里面生效的脚本,

让所有在本脚本里面运行的脚本的进程数目都被强制的限制。

比如我们之前说如果加上&在后台执行,

就会一次性的执行,

我希望使用一些方法让这个方式可以每次只执行四个。

希望知道的高手可以帮助我。

谢谢!!!
yubinalice
帖子: 197
注册时间: 2015-12-23 16:20
系统: ubuntu 16.04

Re: 如何用简单的方法控制脚本的线程

#2

帖子 yubinalice » 2016-02-29 23:00

同时,我希望我可以知道进程执行的过程,

简单的讲,如果我这样写,

for tar in *
do
tar xvf $tar
done

如此的,

我可以看到解压的过程。

但是要是加上&就会被放到后台,如此就看不到解压的过程了。

所以谁知道如何在不使用&的情况下面进行多线程的解压,

我们可以开4个子shell来显示。

突然间,我发现貌似这个shell设计的时候就是只能显示一个线程的。

我不奢望弄得和迅雷显示下载一样。

但是还是希望可以适当的显示一下。

不知道在shell里面有没有这样的的工具。
回复