for 循环的多线程并行执行
作者:互联网
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
标签:txt,ip,并行执行,ping,echo,host,循环,online,多线程 来源: https://www.cnblogs.com/zhijiyiyu/p/15033158.html