shell脚本实现并发控制

时间:2022-06-01 00:48:48

++++++++++++++++++++++++++++++++++++++++++++++++++
标题: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