如何启动多个远程进程并在所有进程完成后等待

时间:2015-09-22 03:23:59

标签: ruby multithreading ssh

我需要在多个虚拟机中启动多个Python脚本。

我想运行脚本并退出。脚本完成后,应该发回一条消息。

到目前为止,我的尝试是:

outputs = {}
threads = []

(0..(@number_of_vms - 1)).each do |vm|
  threads << Thread.new do

    Net::SSH.start(address[vm], user) do |session|
      cmd = 'python /media/sf_openfoam/gen_cfd_results.py'
      outputs[address[vm]] = session.exec!(cmd)

    end
  end
end
threads.each {|thr| thr.join }

这样可行,但它等待脚本完成。 我试图删除最终的join,但随后Ruby退出并且脚本要么不运行,要么只有其中一个执行并且它会挂起。

有什么建议吗?

0 个答案:

没有答案