如何在shell脚本中结合运行多个ruby文件?

时间:2013-06-05 20:45:52

标签: ruby shell

我有一个类似于以下内容的.sh文件:

ruby one.rb
ruby two.rb
ruby three.rb
ruby four.rb
ruby five.rb
ruby six.rb
ruby seven.rb
ruby eight.rb

这样做是逐个运行ruby文件。我将如何开始联合发布前四个,并且在前四个完成后立即抓住下一组。不知道如何处理这个,任何建议表示赞赏。我现在想避免使用rake并继续使用shell。

3 个答案:

答案 0 :(得分:13)

您是否尝试过使用&wait

ruby one.rb &
ruby two.rb &
ruby three.rb &
ruby four.rb &
wait
ruby five.rb &
ruby six.rb &
ruby seven.rb &
ruby eight.rb &

http://tldp.org/LDP/abs/html/subshells.html

答案 1 :(得分:2)

创建一个类似于:

的文本文件
 one.rb
 two.rb
 three.rb

......等等。称之为“工作”或任何你想要的东西。然后,假设您正在运行Ubuntu或类似的系统:

 sudo apt-get install parallel
 parallel ruby < jobs

有关parallel命令的信息,请访问:http://www.gnu.org/software/parallel/

答案 2 :(得分:0)

不要避免耙。立即学习并从中受益。

require 'rake'
run = -> sym { system "ruby #{sym}.rb" }
u, v = [:one, :two, :three, :four ], [:five, :six, :seven, :eight]
u.each { |sym| task sym do run.( sym ) end }
multitask midpoint: u
v.each { |sym| task sym => :midpoint do run.( sym ) end }
multitask( all: v ).invoke