É possível iniciar um comando em vários nós ao mesmo tempo?

É possível iniciar um comando em vários nós ao mesmo tempo?

É possível iniciar um comando em 10 nós ao mesmo tempo?

Aqui está uma parte do meu script:

#! /bin/sh

nb_lignes=`wc -l $1 | cut -d " " -f1`
echo "$nb_lignes machines"

for i in $(seq $nb_lignes)
do
    machine=`head $1 -n $i | tail -1`
    ssh root@$machine -x "instruction"  

done

Responder1

É sim. O dshcomando fornece exatamente o que você mencionou. Ele executará o mesmo comando em uma lista de nós especificados por parâmetro, e você pode até analisar o stdout e o stderr para obter a resposta de qualquer um desses nós.

Para utilizá-lo, recomendo utilizar uma autenticação de chave SSH para evitar o dshcomando de solicitação de senha.

Existe uma alternativa, chamada clusterssh. Esta é uma versão interativa do dshcomando, portanto uma mini-janela com shell será aberta por máquina, para que você possa inserir um comando em um shell específico ou um comando global para todas as janelas.

Responder2

Usando GNU Parallel fica assim:

parallel --slf $1 --nonall instruction

Isso gerará um trabalho por CPU.

GNU Parallel é um paralelizador geral e facilita a execução de trabalhos em paralelo na mesma máquina ou em várias máquinas às quais você tem acesso ssh. Muitas vezes pode substituir um forloop.

Se você tiver 32 jobs diferentes que deseja executar em 4 CPUs, uma maneira simples de paralelizar é executar 8 jobs em cada CPU:

Agendamento simples

Em vez disso, o GNU Parallel gera um novo processo quando um deles termina - mantendo as CPUs ativas e economizando tempo:

Agendamento paralelo GNU

Instalação

Se o GNU Parallel não estiver empacotado para sua distribuição, você poderá fazer uma instalação pessoal, que não requer acesso root. Isso pode ser feito em 10 segundos fazendo o seguinte:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Para outras opções de instalação consultehttp://git.savannah.gnu.org/cgit/parallel.git/tree/README

Saber mais

Veja mais exemplos:http://www.gnu.org/software/parallel/man.html

Assista aos vídeos de introdução:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Percorra o tutorial:http://www.gnu.org/software/parallel/parallel_tutorial.html

Inscreva-se na lista de e-mail para obter suporte:https://lists.gnu.org/mailman/listinfo/parallel

informação relacionada