本文介绍了并行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脚本处理命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!