时间:2021-05-22
说到shell可控多线程,网上分享的大部分是管道控制的方案。这种方案,张戈博客也曾经实战并分享过一次:《Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点》,感兴趣的朋友可以看看。
分享一个入门级可控多线程shell脚本方案
下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割、各个击破。
先来 1 段场景描述:
某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几千个IP进行一次Ping检测,只要取得ping可达的IP就好。如果单个IP去ping测试,虽然也可以完成任务,几千个IP还好了,如果更多呢?
鉴于这个case简单程度,第一时间先放弃了以前用过的管道方案,而是采用了各个击破的思想。
简单思路:
按照任务切割的“战略思想”,我先将这几千IP存入一个iplist文件,然后写一个分割函数,将这个文件分成多份临时IP清单,最后,用多线程遍历这些临时IP文件即可变相实现多线程了。
具体代码:
将代码保存为ping.sh之后,执行 sh ping.sh iplist 100 的过程如下:
先将iplist切割成100份,存放在 SplitFile 文件夹中
然后,通过for循环读取这些分割文件,并在后台使用while循环对其中ip执行ping命令。
由于while是丢后台的, 所以for循环会一次性执行100个while,相当于开启了100个线程,速度自然不可同日而语矣。
其中,切割的份数即你想要开启的多线程数量,很明显,这种任务分割的思路虽然没有管道方案来的高大上,但是其思想更加简单易懂,而且通用性也更好,适合入门级的简单多线程任务。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了PHP+shell实现多线程的方法。分享给大家供大家参考。具体如下:这里介绍如何借助shell脚本实现多线程。先写个简单的php代码,这里为了让脚
本文主要对Linux下的多线程进行一个入门的介绍,虽然是入门,但是十分详细,希望大家通过本文所述,对Linux多线程编程的概念有一定的了解。具体如下。1线程基本
声道系统,预算就需要大大提升了。入门级WIFI音箱对比哪款才是最好的选择入门级WIFI音箱对比哪款才是最好的选择入门级WIFI音箱对比哪款才是最好的选择 三星
需要ping一个网段所有机器的在线情况,shell脚步运行时间太长,用python写个多线程ping吧,代码如下:#!/usr/bin/python#codin
一、多线程化选择并行化一个代码有两大选择:multithread和multiprocess。Multithread,多线程,同一个进程(process)可以开启