麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

分享一個入門級可控多線程shell腳本代碼

2020-07-27 19:02:59
字體:
來源:轉載
供稿:網友

說到shell可控多線程,網上分享的大部分是管道控制的方案。這種方案,張戈博客也曾經實戰并分享過一次:《Shell+Curl網站健康狀態檢查腳本,抓出中國博客聯盟失聯站點》,感興趣的朋友可以看看。

分享一個入門級可控多線程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個線程,速度自然不可同日而語矣。
其中,切割的份數即你想要開啟的多線程數量,很明顯,這種任務分割的思路雖然沒有管道方案來的高大上,但是其思想更加簡單易懂,而且通用性也更好,適合入門級的簡單多線程任務。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香蕉久草在线 | 日本黄色一级视频 | 黄色成人在线播放 | 精品国产一区二区三区四区在线 | 国产精品hd免费观看 | 久久久久久久久久久久久久国产 | 蜜桃成品人免费视频 | 思思久而久而蕉人 | 亚洲精品在线观看网站 | 久久精品99国产国产精 | 亚洲成人精品在线 | 久草在线资源观看 | av成人在线观看 | 成人国产视频在线观看 | 日韩999 | 亚洲精品欧美二区三区中文字幕 | 日本欧美一区二区三区在线观看 | 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 免费久久久久 | 久久国产精品99久久人人澡 | 成人福利视频网站 | 欧美成人免费小视频 | 99欧美精品 | 亚洲精品欧美二区三区中文字幕 | 国产精品jk白丝蜜臀av软件 | 色视频欧美 | 欧美日本亚洲视频 | 91精品国产91久久久久久吃药 | 国产一区成人 | 欧美高清第一页 | 久久久久久久久久亚洲精品 | 精品国产高清一区二区三区 | 在线免费观看欧美 | 欧美综合在线观看 | 中文日韩欧美 | 精品久久久久久久 | 九九午夜| a黄色片| 亚洲人成在线播放 | 亚洲二区不卡 | 国产一级午夜 |