Friday, 14 December 2012

multi threading with sock

#!/bin/bash
rm -rvf fol fol1
mkdir fol fol1
j=0
l=0
echo 0 > /tmp/i
cop()
{
until [ -f /tmp/sock ]
do
i=`cat /tmp/i`
for((i=$i;i<50;i++))
do
touch /tmp/sock
cp -rvf pub fol/test$i
sleep 3
i=$(($i+1))
echo $i > /tmp/i
break
done
rm -rvf /tmp/sock
done
}
thread()
{
if [ `ps aux | grep $0 | grep -v grep | grep -v vim | grep -v watch | wc -l` -le 6 ]
then
cop $j&
sleep 1
break
fi
}
for((k=0;k<50;k++))
do
while [ $l -le 45 ]
do
thread &
sleep 1
l=`cat /tmp/i`
done
if [ $l -gt 49 ]
then
exit 4
fi
done

Monday, 10 December 2012

Multithread v1

#!/bin/bash
dd if=/dev/zero of=~/pub bs=1M count=50
rm -rvf fol fol1
mkdir fol fol1
for i in $(seq 50)
do
cp -rvf pub fol/test$i
done
copy()
{
ls fol/ | grep -v gz$ | paste - | while read a
do
sleep 10
gzip fol/$a
sleep 1
mv -v fol/$a.gz fol1/
sleep 1
break
done
}
thread()
{
if [ `ps aux | grep $0 | grep -v grep | wc -l` -le 17 ]
then
$1 &
sleep 1
fi
}
while [ `ls fol/ | paste - | wc -l` -gt 0 ]
do
thread copy &
sleep 1
done


To check multi thread :

watch -n 0 "ps aux | grep start | grep -v grep "