Ruby: Как выполнять задачи параллельно самым простым способом - PullRequest
1 голос
/ 15 октября 2019

Я ищу самый простой способ использовать его удобно для системного администрирования в целом.

Я проверил Parallels / ForkManager, Grosser / Parallel и т. Д., Но все, кажется, не так просто понять.

#!/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

Заранее спасибо!

1 Ответ

5 голосов
/ 15 октября 2019
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)

Вам нужно вызывать join в каждом потоке, иначе они будут уничтожены, когда основной поток процессов существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...