Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#!/bin/sh -e opts='-ovc x264 -x264encopts bitrate=22000:keyint=50 -oac mp3lame -lameopts vbr=3:br=320 -fps 50' ( for n in 00108 00109 00110 00111 00118 00119 00120 00123; do echo $n done ) | xargs -P 2 -J % mencoder -o input/%.mts %.avi $opts
#!/bin/bash # список чего-нить list="mail.ru ya.ru google.ru" i=1 # функция обработки test() { echo start $1 ping -c 3 $1 > /dev/null echo end $1 } # параметр - количество одновременных процессов limit=$1 a=1 while true do param=$(echo $list | awk "{print \$$a}") if [ $param ] then # для того, чтобы убедиться # jobs jobs=$(jobs | wc -l) if (( jobs < limit)) then test $param & (( a++ )) # чтобы не было расхода процессора - раскомментируйте: (просто иначе на пингах не видно ;)) # sleep 1 fi else break fi done wait
all: mail.ru ya.ru google.ru
%.ru:
echo "start $@"; ping -c 3 $@ 1>/dev/null; echo "finish $@"
#!/bin/bash list="mail.ru fignya.ya ya.ru google.ru mista.ru" test() { echo start $1 ping -c 3 $1 > /dev/null echo end $1 } limit=$1 func() { while [ $1 ]; do if (( `jobs | wc -l` < limit )); then test $1 & shift fi done } # а если передавать все командной строкой - то shift; func $@ func $list wait
Распараллеливание задач в Linux