1

Можно ли запустить команду на 10 узлах одновременно?

Вот часть моего сценария:

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

2 ответа2

0

Да, это. Команда dsh предоставляет именно то, что вы упоминаете. Он выполнит ту же команду в списке узлов, указанных параметром, и вы можете даже проанализировать stdout и stderr для ответа любого из этих узлов.

Чтобы использовать его, я рекомендую использовать аутентификацию по SSH-ключу, чтобы команда dsh запрашивала пароль.

Есть альтернатива, которая называется clusterssh . Это интерактивная версия команды dsh , поэтому для каждого компьютера будет открыто мини-окно с оболочкой, поэтому вы можете ввести команду в определенной оболочке или глобальную команду для всех окон.

0

Используя GNU Parallel это выглядит так:

parallel --slf $1 --nonall instruction

Это будет порождать одну работу на процессор.

GNU Parallel - это общий параллелизатор, который позволяет легко запускать задания параллельно на одной и той же машине или на нескольких машинах, к которым у вас есть доступ по ssh. Он часто может заменить цикл for .

Если у вас есть 32 различных задания, которые вы хотите запустить на 4 процессорах, прямой способ распараллеливания - запустить 8 заданий на каждом процессоре:

Простое планирование

GNU Parallel вместо этого порождает новый процесс после его завершения - поддерживая процессоры активными и, таким образом, экономя время:

Параллельное планирование GNU

Монтаж

Если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить личную установку, которая не требует root-доступа. Это можно сделать за 10 секунд, выполнив это:

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

Для других вариантов установки см. Http://git.savannah.gnu.org/cgit/parallel.git/tree/README.

Учить больше

Смотрите больше примеров: http://www.gnu.org/software/parallel/man.html

Посмотрите вступительные видеоролики: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Просмотрите учебник: http://www.gnu.org/software/parallel/parallel_tutorial.html

Подпишитесь на список рассылки, чтобы получить поддержку: https://lists.gnu.org/mailman/listinfo/parallel

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .