我有一个类似于以下内容的.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。
答案 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 &
答案 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