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