如何实现可控多线程shell脚本
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章将为大家详细讲解有关如何实现可控多线程shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先来 1 段场景描述:某日,在鹅厂接到了这个任务,需要在L
千家信息网最后更新 2025年11月08日如何实现可控多线程shell脚本
这篇文章将为大家详细讲解有关如何实现可控多线程shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
先来 1 段场景描述:
某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几千个IP进行一次Ping检测,只要取得ping可达的IP就好。如果单个IP去ping测试,虽然也可以完成任务,几千个IP还好了,如果更多呢?
鉴于这个case简单程度,第一时间先放弃了以前用过的管道方案,而是采用了各个击破的思想。
简单思路:
按照任务切割的"战略思想",我先将这几千IP存入一个iplist文件,然后写一个分割函数,将这个文件分成多份临时IP清单,最后,用多线程遍历这些临时IP文件即可变相实现多线程了。
具体代码:
#!/bin/sh#文本分割函数:将文本$1按份数$2进行分割SplitFile(){ linenum=`wc -l $1 |awk '{print $1}'` if [[ $linenum -le $2 ]] then echo "The lines of this file is less then $2, Are you kidding me..." exit fi Split=`expr $linenum / $2` Num1=1 FileNum=1 test -d SplitFile || mkdir -p SplitFile rm -rf SplitFile/* while [ $Num1 -lt $linenum ] do Num2=`expr $Num1 + $Split` sed -n "${Num1}, ${Num2}p " $1 > SplitFile/$1-$FileNum Num1=`expr $Num2 + 1` FileNum=`expr $FileNum + 1` done} #Define some variablesSPLIT_NUM=${1:-10} #参数1表示分割成多少份即,开启多少个线程,默认10个FILE=${2:-iplist} #参数2表示分割的对象,默认iplist文件 #分割文件SplitFile $FILE $SPLIT_NUM #循环遍历临时IP文件for iplist in $(ls ./SplitFile/*)do #循环ping测试临时IP文件中的ip(丢后台) cat $iplist | while read ip do ping -c 4 -w 4 $ip >/dev/null && echo $ip | tee -ai okip.log #ping 可达的IP则写入日志 done & #在while循环后面加上&符号,让这个嵌套循环在后台执行done将代码保存为ping.sh之后,执行 sh ping.sh iplist 100 的过程如下:
先将iplist切割成100份,存放在 SplitFile 文件夹中
然后,通过for循环读取这些分割文件,并在后台使用while循环对其中ip执行ping命令。
由于while是丢后台的, 所以for循环会一次性执行100个while,相当于开启了100个线程,速度自然不可同日而语矣。
其中,切割的份数即你想要开启的多线程数量,很明显,这种任务分割的思路虽然没有管道方案来的高大上,但是其思想更加简单易懂,而且通用性也更好,适合入门级的简单多线程任务。
关于"如何实现可控多线程shell脚本"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
文件
线程
循环
任务
后台
思想
更多
篇文章
脚本
代码
份数
函数
参数
思路
文本
方案
管道
先将
测试
不错
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全的几大安全属性
数据库对象名不存在
威胁网络安全的是啥
两个同名的数据库间如何同步
中国 服务器 厂商
pdb蛋白数据库
天津时代网络技术产品介绍
无锡信息软件开发电话多少
网络安全短视频大赛
徐州今非网络技术有限公司
dell r440服务器合格证
文汇报数据库安装
云服务器能运行软件吗
服务器游客id和ip
长城服务器cf520价格
网络安全知识竞赛次数
果加智能怎么一直服务器异常
h3c服务器启动后看不到硬盘
数据库网页版外键怎么写
数据库10几个G
网络安全ips设备报价
数据库管理工程师价值
erp数据库维护
上海上想网络技术有限公司
动漫填色软件开发
有网app显示服务器连接异常
华为钱包充值服务器内部错误
高考志愿填报专业数据库
网络安全培训制度
计算网络技术教程刘振堃