用fifo控制并发数量,一次同时后台运行两个。运行时间比较长,其中一个运行完之后,又启动了两个进程,这样就同时有3个了,
#!bin/bash
#exec clear file
mkdir -p xxx
thread_num=2
[ ! -p tmp ] && mkfifo tmp
exec 9<>tmp
for ((i=0;i<$thread_num;i++)); do
echo >&9
done
echo "================start sh===================="
for i in `cat shfiles.txt`;
do
read -u 9
{
sh $i
mv $i xxx/
echo >&9
} &
done
wait
exec 9>&-
rm tmp
echo "=================done===================="
exit 0
这个方法不行,老是莫名的多一个,又多一个,最后用了别的方法