Не знал писать или нет но всё таки решил поделиться. Потребовалось тут по работе запускать параллельную обработку файлов с определяемым количеством потоков. Сначала в интернете нашёл статью Dr.AKULAvich где рассказывалось про ppss (http://drakulavich.blogspot.com/2009/01/ppss.html) но по целому ряду причин эта программа нам не подошла и тогда я просто сам написал простой и во многом примитивный скрипт. Но главное что он работает! Вот делюсь:
Несколько пояснений: никакой универсальностью здесь и не пахнет. Под каждую задачу его надо править ручками. Данный вариант обработает все файлы с расширением dmp в папке /home/user/dir. Обработка сводится к их шифрованию с жатием и последующем удаление исходных файлов. Переменная TH определяет количество потоков.
#!/bin/bash
enc () {
for FILES in `cat $1`
do
gpg -z 9 -e -r my@email.com $FILES && shred -z -u -n 1 -s 1M $FILES
done
}
TH=8
cd /home/user/dir
for i in *.dmp
do
echo $i >> list.txt
done
N=`cat list.txt | wc -l`
let "L = N / TH"
let "RES = N % TH"
if [ $RES != 0 ]; then
let "L +=1"
else
echo ""
fi
split -l $L -d list.txt
for NUM in x*
do
enc $NUM &
done
rm list.txt
rm -f x*
Comments