++++++++++++++++++++++++++++++++++++++++++++++++++
标题:shell脚本实现并发控制
内容:以ping测试主机存活为例,讲述如何通过命名管道文件以及描述符等知识实现并发控制
时间:2019年4月22日
++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/bash
#定义命名管道文件以及并发数量
fifofile=/tmp/$$.fifo
thread=4
#创建命名管道并以文件描述符6打开命名管道
mkfifo $fifofile
exec 6<> $fifofile
rm $fifofile
#向命名管道中输出内容
for i in `seq $thread`
do
echo "" >&6
done
#通过并发控制实现主机存活探测
for i in {1..254}
do
#从文件描述符6中按行读取数据
read -u 6
{
ip=192.168.44.$i
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ] ; then
echo "$ip is up..."
else
echo "$ip is down..."
fi
#每执行完一条在想描述符6中输入一行
echo "" >&6
#&符号表示将放于后台进行执行
}&
done
#等待全部执行完毕后,退出shell
wait