我有一个sh文件看起来像以下:如何在shell脚本中一起运行多个ruby文件?
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。
我有一个sh文件看起来像以下:如何在shell脚本中一起运行多个ruby文件?
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。
您是否尝试过使用&
和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 &
不要回避耙。现在了解它并从此受益。
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
不,我已经想过了,这个断言的严重性保证了它的存在,作为可能的答案之一。 –
@AndyHayden:编辑 –
@BorisStitnicky谢谢,不能帮助downvotes,但那*做*停止它被删除:) –
创建一个文本文件,它看起来像:
one.rb
two.rb
three.rb
...等等。称它为“工作”或任何你想要的。然后,假设您正在运行Ubuntu或类似的系统:
sudo apt-get install parallel
parallel ruby < jobs
在parallel
命令的信息,请访问:http://www.gnu.org/software/parallel/
+1,你教我的东西有 –
我想给使用子这样的回答炮弹,但不知道“等待”。 +1为好回答 –
woohoo工作!每天学习一些东西.. *拇指通过subhells doc *谢谢! – Josh