scp не отображает вывод при использовании с параллелью гну

Попытка:

parallel ::: ./handle_1.py ./handle_2.py ./handle_3.py

Если handle_1.py берет имя файла:

parallel ::: ./handle_1.py ./handle_2.py ./handle_3.py ::: files*

Вы не хотите смешанного вывода, не используйте-u.

Если Вы хотите сохранить порядок (таким образом, весь вывод handle_1, прежде handle_2 и таким образом Вы смогли стараться не сортировать):

parallel -k  ::: ./handle_1.py ./handle_2.py ./handle_3.py ::: files*

Если Вы все еще хотите отсортированный, можно параллелизировать вид и использовать sort -m:

parallel --files "./handle_{1}.py {2} | sort -n"  ::: 1 2 3 ::: files* | parallel -j1 -X sort -m

$TMPDIR набора к dir, который является достаточно большим для содержания вывода.

2
13.09.2017, 02:55
2 ответа

Обманывать scp в размышление его имеет a tty соединенный можно использовать script:

script -c 'scp foo server1:/bar/'

Таким образом выполнять это в с parallel Вам нужно что-то как:

parallel -j30 "echo {}; echo '----------------------------------------' ; script -c 'scp -r $FILES {}:' ; echo ''"   ::: $HOSTS

Для узнавания больше проверяют вводные видео (https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1), ПРИМЕРЫ (n1_argument_appending"> http://www.gnu.org/software/parallel/man.html#example __ working_as_xargs_n1_argument_appending), и учебное руководство (http://www.gnu.org/software/parallel/parallel_tutorial.html).

1
27.01.2020, 22:22
  • 1
    Brilliant. Примеры в учебном руководстве были особенно полезны. Спасибо :) –  jayhendren 17.11.2013, 18:31

Это, кажется, работает на меня:

#!/bin/sh

for h in $(cat /tmp/servers);
do
    for f in $(cat /tmp/files);
    do
        echo $h
        echo '----------------------'
        parallel -vv "scp root@$h:$f /tmp"
    done
done

Выньте-vv для удаления подробного вывода. И, конечно, измените его так, чтобы A) это использовало Ваши переменные $HOSTS и $FILES и B) это скопировало в удаленный сервер, а не от.

0
27.01.2020, 22:22

Теги

Похожие вопросы