2013-06-05 80 views
4

我有一個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。

回答

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

+1,你教我的東西有 –

+0

我想給使用子這樣的回答炮彈,但不知道「等待」。 +1爲好回答 –

+0

woohoo工作!每天學習一些東西.. *拇指通過subhells doc *謝謝! – Josh

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 
+0

不,我已經想過了,這個斷言的嚴重性保證了它的存在,作爲可能的答案之一。 –

+0

@AndyHayden:編輯 –

+0

@BorisStitnicky謝謝,不能幫助downvotes,但那*做*停止它被刪除:) –

2

創建一個文本文件,它看起來像:

one.rb 
two.rb 
three.rb 

...等等。稱它爲「工作」或任何你想要的。然後,假設您正在運行Ubuntu或類似的系統:

sudo apt-get install parallel 
parallel ruby < jobs 

parallel命令的信息,請訪問:http://www.gnu.org/software/parallel/

相關問題