本文介绍了并行bash脚本处理命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个bash脚本,如下所示:

 #!/斌/庆典
wget的LINK1>的/ dev / null的2 - ;&放大器; 1
wget的LINK2>的/ dev / null的2 - ;&放大器; 1
wget的LINK3>的/ dev / null的2 - ;&放大器; 1
wget的LINK4>的/ dev / null的2 - ;&放大器; 1
#..
#..
wget的LINK4000>的/ dev / null的2 - ;&放大器; 1

但处理每一行,直至完成然后移动到下一个非常耗时的命令,我要当他们完成另外20行处理一次,然后20日线的实例来处理。

我觉得 wget的LINK1制造>的/ dev / null的2 - ;&放大器; 1安培; 将命令发送到后台并进行,但也有4000行在这里,这意味着我将有性能问题,更何况,我应该多少进程在同一时间开始被限制,因此这不是一个好主意。

一个解决方案,我在想,现在正在检查一个命令是否仍在运行与否,例如后20行,我可以添加这个循环:

 ,而[$(PS -ef | grep的导航| grep的-v grep的|厕所-l)-gt 0];做
睡眠1
DONE

当然,在这种情况下,我需要追加&安培;该行的结尾!但是我觉得这是不是这样做的正确方法。

那么,如何做我其实组各20条线一起,等待他们才去到下一个20行完成,是动态生成的这个剧本,所以我可以做我想做的是什么数学的生成,而它,但它确实不必使用wget,这只是一个例子,因此任何解决方案,具体的wget是不是要去我好。


解决方案

使用内置:

 &过程1安培;
过程2&安培;
process3&安培;
process4&安培;
等待
process5&安培;
process6&安培;
process7&安培;
process8&安培;
等待

对于上面的例子中,4个进程过程1 .. process4 将在后台启动,壳会等到这些都开始下一组之前完成的。

从:

这篇关于并行bash脚本处理命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 14:03
查看更多