如何使用GNU parallel来运行4个命令同时运行的命令列表

我有我想要调用的shell命令列表。 最多四个进程应同时运行。

一旦进程数降到4以下,下一个命令就会被发送到shell,直到所有的命令完成。

我已经得到了一个“部分”工作的解决scheme,但是依赖于wait -n,而这在我的debian wheezy安装中是不可用的。

链接到其他的计算器问题

有一个人提到了GNU Parallel。 这可以实现吗? 任何指导真的很感激!

nohup scrapy crawl urlMonitor -a slice=0 & nohup scrapy crawl urlMonitor -a slice=1 & nohup scrapy crawl urlMonitor -a slice=2 & nohup scrapy crawl urlMonitor -a slice=3 & nohup scrapy crawl urlMonitor -a slice=4 & nohup scrapy crawl urlMonitor -a slice=5 & nohup scrapy crawl urlMonitor -a slice=6 & nohup scrapy crawl urlMonitor -a slice=7 & nohup scrapy crawl urlMonitor -a slice=8 & nohup scrapy crawl urlMonitor -a slice=9 & nohup scrapy crawl urlMonitor -a slice=10 & nohup scrapy crawl urlMonitor -a slice=11 & nohup scrapy crawl urlMonitor -a slice=12 & nohup scrapy crawl urlMonitor -a slice=13 & nohup scrapy crawl urlMonitor -a slice=14 & nohup scrapy crawl urlMonitor -a slice=15 & nohup scrapy crawl urlMonitor -a slice=16 & nohup scrapy crawl urlMonitor -a slice=17 & nohup scrapy crawl urlMonitor -a slice=18 & nohup scrapy crawl urlMonitor -a slice=19 & nohup scrapy crawl urlMonitor -a slice=20 & nohup scrapy crawl urlMonitor -a slice=21 & nohup scrapy crawl urlMonitor -a slice=22 & nohup scrapy crawl urlMonitor -a slice=23 & nohup scrapy crawl urlMonitor -a slice=24 & nohup scrapy crawl urlMonitor -a slice=25 & nohup scrapy crawl urlMonitor -a slice=26 & nohup scrapy crawl urlMonitor -a slice=27 & nohup scrapy crawl urlMonitor -a slice=28 & nohup scrapy crawl urlMonitor -a slice=29 & nohup scrapy crawl urlMonitor -a slice=30 & nohup scrapy crawl urlMonitor -a slice=31 & nohup scrapy crawl urlMonitor -a slice=32 & nohup scrapy crawl urlMonitor -a slice=33 & nohup scrapy crawl urlMonitor -a slice=34 & nohup scrapy crawl urlMonitor -a slice=35 & nohup scrapy crawl urlMonitor -a slice=36 & nohup scrapy crawl urlMonitor -a slice=37 & nohup scrapy crawl urlMonitor -a slice=38 & 

如果你有GNU Parallel,你可以这样做:

 parallel -j4 scrapy crawl urlMonitor -a slice={} ::: {1..38} 

GNU并行是一个通用的并行程序,可以很容易地在同一台机器或多台你有ssh访问的机器上并行运行作业。

如果你想在4个CPU上运行32个不同的作业,那么最简单的方法就是在每个CPU上运行8个作业:

简单的调度

当一个完成时,GNU并行会产生一个新的进程 – 保持CPU活动,从而节省时间:

GNU并行调度

安装

如果您的发行版没有打包GNU Parallel,则可以进行个人安装,而不需要root权限。 这可以在10秒内做到这一点:

 (wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

有关其他安装选项,请参阅http://git.savannah.gnu.org/cgit/parallel.git/tree/README

学到更多

查看更多示例: http : //www.gnu.org/software/parallel/man.html

观看介绍视频: https : //www.youtube.com/playlist? list = PL284C9FF2488BC6D1

浏览教程: http : //www.gnu.org/software/parallel/parallel_tutorial.html

注册邮件列表以获得支持: https : //lists.gnu.org/mailman/listinfo/parallel