百度做商务网站多少钱淘宝客推广平台
shell多线程? 其实这里说的是多进程.
其实就是开多个后台进程, 然后等它们都结束后, 才认为结束.
举一个最常见的例子, ping一个网段内的所有ip, 看其通断情况. 其他情况都可以套用这个例子来改造:
#! /bin/bash
#
# Distributed under terms of the MIT license.
## 这个并发度是为了同时不会开太多进程, 怕系统资源不够. 根据实际情况调节.
concurrency=${1:-5}
ipPrefix=${2:-"10.25.3"}fifoFile="/tmp/$$.fifo"
fd=8# 创建命名管道
mkfifo $fifoFile
trap "exec 8>&-; rm $fifoFile" EXIT# 创建文件描述符并和文件关联
# 测试过程中发现这里不能用$fd, 就要写上具体数字
exec 8<>"$fifoFile"for i in `seq $concurrency`; doecho >& $fd
donefor i in {1..254}; doread -u $fd{ip="$ipPrefix.$i"ping -c 1 -W 1 $ip &>/dev/nullif [ $? -eq 0 ]; thenecho "$ip is up"elseecho "$ip is down"fiecho >& $fd}&
donewaitecho "all done"