# time bash single_process.sh 10.227.49.1 is alive 10.227.49.11 is alive 10.227.49.12 is alive 10.227.49.13 is alive 10.227.49.14 is alive 10.227.49.15 is alive 10.227.49.16 is alive 10.227.49.17 is alive ……………………………………………………… ……………………………………………………… 10.227.49.164 is alive 10.227.49.165 is alive 10.227.49.166 is alive 10.227.49.167 is alive 10.227.49.168 is alive 10.227.49.169 is alive 10.227.49.193 is alive
real 7m11.429s user 0m0.191s sys 0m0.241s
此脚本执行时间为 7m11.429s,按照顺序依次执行。
简单多并发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/bin/bash
for ip in 10.227.49.{1..254} do { sleep 1 ping $ip -c 1 -w 1 &>/dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi } &
# time bash mul_process.sh 10.227.49.1 is alive 10.227.49.13 is alive 10.227.49.11 is alive 10.227.49.12 is alive 10.227.49.15 is alive 10.227.49.14 is alive 10.227.49.16 is alive 10.227.49.17 is alive ……………………………………………………… ……………………………………………………… 10.227.49.166 is alive 10.227.49.168 is alive 10.227.49.164 is alive 10.227.49.169 is alive 10.227.49.165 is alive 10.227.49.167 is alive 10.227.49.193 is alive
for i in {1..10} //*并发的数量10个,"seq 1 10"等同于"{1..10}",前者可以使用变量赋值 do echo >&54 //*向管道文件里丢数据 done
for i in {1..65535} //*定义任务数量 do read -u 54 //*从管道文件里读取文件,读取到内容就向下走,读取不到就停留等待 { tcping -t1 118.25.100.250 $i }& echo >&54 //*由于管道文件的数据拿一个少一个,所以我们要把数据再还给管道文件 done wait //*等待所有后台任务执行完毕 exec 54<&- //*释放之前被删除的管道文件 echo "all of finished..."