#ping01#!/usr/bin/bash
thread=5#進程數量
tmp_fifofile=/tmp/$$.fifo
mkfifo$tmp_fifofileexec 8<>$tmp_fifofilerm$tmp_fifofile##描述符8還存在for i in`seq $thread`doecho>&8 ##&8指的就是文件描述符8,單個echo就是回車donefor i in{2..254}doread -u 8
{
ip=192.168.122.$iping -c1 -W1 $ip&>/dev/null ## -W1表示1秒超時if[$? -eq 0 ];thenecho"$ip is up"elseecho"$ip is down"fiecho>&8##上面的事做完了,就還回去。不要都借完了,再還回去,保證管道的輸入有5個數據輸入}&donewait##等待所有的後臺進程執行結束,如果不加這裏,有些ping執行不成功,就會執行echo "finish"exec 8>&-
echo"finish"
執行的話,5個,5個一起出結果
#!/bin/bash#ping01#!/usr/bin/bashfor i in{2..254}do{
ip=192.168.122.$iping -c1 -W1 $ip&>/dev/null ## -W1表示1秒超時if[$? -eq 0 ];thenecho"$ip is up"elseecho"$ip is down"fi}&donewait##等待所有的後臺進程執行結束,如果不加這裏,有些ping執行不成功,就會執行echo "finish"echo"finish"#!/bin/bash#ping01#!/usr/bin/bashfor i in{1..100}do{
user=abc$iuseradd$userecho"111"|passwd --stdin $user&>/dev/null
if[$? -eq 0 ];thenecho"$user is created"elseecho"$user is not created"fi}&donewait##等待所有的後臺進程執行結束,如果不加這裏,有些ping執行不成功,就會執行echo "finish"echo"finish"