我有我想要调用的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 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