#!/bin/bash
#How many threads you want to concurrent threadnum=3 #set file description to 8 tempfifo="/tmp/$$.fifo" mkfifo $tempfifo exec 8<>$tempfifo rm -f $tempfifo #List for what things you want to do iplist="192.168.1.7 202.98.96.1 www.baidua.com 1.1.1.71" #Define function, process what did you want to do ping_sub() { ping -c 3 $1 >/dev/null 2>&1 } # for ((i=0; i<$threadnum; i++)); do { echo >&8 } done for ip in $iplist; do { read -u8 ping_sub $ip && echo "Host $ip was online" ||echo "Host $ip was offline" echo >&8 } & done wait exec 8>&-