Попытка:
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, который является достаточно большим для содержания вывода.
Обманывать 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).
Это, кажется, работает на меня:
#!/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) это скопировало в удаленный сервер, а не от.