Ruby:如何以最简单的方式并行运行任务

Ste*_*eve 1 ruby

我正在寻找最简单的方法来方便地将其用于系统管理。

我检查了并行/ forkmanager,总体/并行等,但是似乎都不是那么容易掌握。

#!/usr/bin/ruby

servers = [ 'server1.example.com', 'server2.example.com', 'server3.example.com' ]

cmd = 'iostat 1 10'

servers.each do |server|
  puts server
  system("sshpass -f mypwfile ssh #{server} #{cmd}")
end
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Kri*_*ris 5

servers = [ 'server1.example.com', 'server2.example.com', 'server3.example.com' ]

cmd = 'iostat 1 10'

servers.map do |server|
  Thread.new do
    puts server
    system("sshpass -f mypwfile ssh #{server} #{cmd}")
  end
end.each(&:join)
Run Code Online (Sandbox Code Playgroud)

您需要调用join每个线程,否则当进程主线程存在时它们将被杀死。