首页 > 编程语言 > 详细

for 循环的多线程并行执行

时间:2021-07-20 10:49:13      阅读:35      评论:0      收藏:0      [点我收藏+]

for循环的多线程执行

当我们使用for 循环ping 多台主机时,由于是串行执行,所以效率不高。

1,串行执行

#!/bin/bash

#记录ping 开始时间
echo "$(date +%T) start "> ./time.txt
for i in 192.168.23.{1..25} 
do
    ping -c 3 -i 0.5 -w 2 $i &> /dev/null   #串行执行ping 命令
    if [ $? -eq 0 ];then
        echo "$i is online" >> ./host_ip_online
    else
        echo "$i is offline" >> ./host_ip_offline
    fi
done

#记录ping 结束时间
echo "$(date +%T) done" >> ./time.txt


cat ./host_ip_online
cat ./time.txt

技术分享图片



2.并行执行

#!/bin/bash

#记录ping 开始时间
echo "$(date +%T) start "> ./time.txt
for i in 192.168.23.{1..25}
do
{
    ping -c 3 -i 0.5 -w 2 $i &> /dev/null   #串行执行ping 命令
    if [ $? -eq 0 ];then
        echo "$i is online" >> ./host_ip_online
    else
        echo "$i is offline" >> ./host_ip_offline
    fi
}&  #放入后台并行执行

done

wait    #等待后台命令结束,再执行下面的命令

#记录ping 结束时间
echo "$(date +%T) done" >> ./time.txt


cat ./host_ip_online
cat ./time.txt

技术分享图片

for 循环的多线程并行执行

原文:https://www.cnblogs.com/zhijiyiyu/p/15033158.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!