Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, 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