#!/bin/bash
#允许的进程数
THREAD_NUM=200
#定义描述符为9的管道
mkfifo tmp
exec 9<>tmp
#预先写入指定数量的换行符,一个换行符代表一个进程
for ((i=0;i<$THREAD_NUM;i++))
do
echo -ne "\n" 1>&9
done
if [ $# != 1 ] ;then
echo "The parameters you enter is not correct !";
exit -1;
fi
while read line
do
{
#进程控制
read -u 9
{
isok=`curl -I -o /dev/null -s -w %{http_code} $line -m 5`
if [ "$isok" = "200" ]; then
echo $line "OK"
else
echo $line $isok
fi
echo -ne "\n" 1>&9
}&
}
done < $1
wait
echo "执行结束"
rm tmp
# 版权归原作者所用,详细使参照连接,做少量轻微修改 https://www.jb51.net/article/51720.htm
实际测试好用300网站用时15秒,建议根据网络状态,修改 -m参数
ps 2020年6月1日08:50:36 后期做了修改,这个方式并发大的时候或者任务多的时候会bug,有时间了把新版的更新下。
网友评论