powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / умный многопоточный bash скрипт
9 сообщений из 9, страница 1 из 1
умный многопоточный bash скрипт
    #37728595
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно ли, что бы скрипт автоматически запускал 2-10 дочерних потоков (скажем, md5sum). но не более того.
то есть он запускает и сам же дожидается так, что бы количество дочек не превышало 2-10 штук ?

или это придется делать "руками" ?

количество "дочек" - определяется переменной. каждый поток - делает свою задачу (для каждого потока - свои аргументы, выдаваемые в цикле). для каждого скрипта - количество потоком определяется переменной. т.е. если один поток поддерживает до 3х нитей, но два скрипта, запущенные одновременно - до 6. и т.д.

4 8 15 16 23 42
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37728613
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin, зачем себя насиловать этим недоязыком? ты же не поддерживаешь скрипты инициализации для системы.
Когда скрипт на баше длинее трех строк - пора его переписать на нормальном языке программирования.

Модуль Parallel::ForkManager в Perl делает в точности то, что тебе нужно.
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37728799
Ихтиандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хочет недоязык!

Можно все что угодно, только придется изобретать велосипед: потоки, как я это вижу, будут представлять отдельный шелл скрипт, который будет создавать файлы-флаги, а мамочка будет эти флаги отслеживать.
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37728846
Фотография bga83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin,

есть вариант с асинхронным выполнением команд через & , не знаю насколько это тебе подойдет
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37728869
Ихтиандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я и имел в виду &, но для синхронизации потоков они должны обмениваться сигналами
я и предложил файлы-флажки
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37728999
Camper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ихтиандр,

Писал когда-то скриптец, правда на sh, реализовал эту функциональность через механизм джобов.
Работало (и скорее всего еще работает) в продуктиве. Можно нагенерить любой список команд и пустить через pipe на выполнение функции.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
#!/usr/bin/sh

#--Local function
parallelrun() {
MPROC=$1
LOG=$2
while [ 1 = 1 ]
do
if [ `jobs -p| wc -l` -lt ${MPROC} ] 
then
	read cmd
	if [ -z "$cmd" ]
	then
		break	
	fi	
	nohup /bin/sh "$cmd" >> ${LOG} 2>&1 &
fi
done
}

#--Start jobs through pipe
#--Define script variables
export SDIR=$1
export TDIR=$2
LOG=$0.log
echo "Logfile location:\t\t ${LOG}"

#--Starting copy in parallel
echo "Starting 3 copy servers" >> ${LOG} 
echo "-----------------------" >> ${LOG}
ls -d ${SDIR}/* | awk 'BEGIN {ddir=ENVIRON["TDIR"];} $0 !~ /\/log0/ && $0 !~ /\/cntrl0/ && $0 !~ /\/temp0/ {print "cp "$0" "ddir}' | parallelrun 3 ${LOG}
echo "-----------------------" >> ${LOG}
#--Wait until all jobs end
wait
echo >> ${LOG}
echo "-----------------------" >> ${LOG}
echo "Done." >> ${LOG}
unset SDIR TDIR
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37729111
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin,

cat commandsfile | xargs -I COMMAND --max-procs=XXX bash -c COMMAND

для вашего dm5 сосбтвенно

find dir criteria | xargs --max-procs=10 md5sum
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37729331
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> возможно ли, что бы скрипт автоматически запускал 2-10 дочерних потоков (скажем,
> md5sum). но не более того.

man parallel ?

Это как xargs, только запускает комманду параллельно.

> то есть он запускает и сам же дожидается так, что бы количество дочек не
> превышало 2-10 штук ?

Ну если читсо bash, то запускать там ты должен сам, сколько хочешь, столько и
запустишь, а потом wait

>
> или это придется делать "руками" ?

Руками.

> количество "дочек" - определяется переменной. каждый поток - делает свою задачу
> (для каждого потока - свои аргументы, выдаваемые в цикле). для каждого скрипта -
> количество потоком определяется переменной. т.е. если один поток поддерживает до
> 3х нитей, но два скрипта, запущенные одновременно - до 6. и т.д.

Всё-таки думаю parallel.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
умный многопоточный bash скрипт
    #37729358
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindAklin, зачем себя насиловать этим недоязыком? ты же не поддерживаешь скрипты инициализации для системы.
Когда скрипт на баше длинее трех строк - пора его переписать на нормальном языке программирования.

Модуль Parallel::ForkManager в Perl делает в точности то, что тебе нужно.

суть в использовании многочисленных утилит, когда лениво разбиратся в запуске сторонних процессов.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / умный многопоточный bash скрипт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]