Shell腳本模擬多線程功能分享
#!/bin/bash
function pinghost {
ping $1 -c 1 -w 10 |grep rtt|cut -d “/” -f6
}
tmp_fifofile=”/tmp/$.fifo” # 腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)作為文件名
mkfifo $tmp_fifofile # 新建一個(gè)隨機(jī)fifo管道文件
exec 6<>$tmp_fifofile # 定義文件描述符6指向這個(gè)fifo管道文件
rm $tmp_fifofile
thread=10
for ((i=0;i<$thread;i++));do # for循環(huán) 往 fifo管道文件中寫入10個(gè)空行
echo
done >&6
while read domain
do
read -u6 # 從文件描述符6中讀取行(實(shí)際指向fifo管道)
{
pinghost ${domain}; # 執(zhí)行pinghost函數(shù)
echo >&6 # 再次往fifo管道文件中寫入一個(gè)空行。
}& # 放到后臺(tái)執(zhí)行
done</home/miotour/ip.txt
wait #因?yàn)橹暗倪M(jìn)程都是后臺(tái)執(zhí)行,因此要有wait來等待所有的進(jìn)程都執(zhí)行完畢后才算整個(gè)腳本跑完。
exec 6>&- #刪除文件描述符6
exit 0
說明:{} 這部分語句被放入后臺(tái)作為一個(gè)子進(jìn)程執(zhí)行,這部分幾乎是同時(shí)完成的,當(dāng)fifo中10個(gè)空行讀完后 while循環(huán)
繼續(xù)等待 read 中讀取fifo數(shù)據(jù),當(dāng)后臺(tái)的10個(gè)子進(jìn)程后,按次序排隊(duì)往fifo輸入空行,這樣fifo中又有了數(shù)據(jù),for語句繼續(xù)執(zhí)行。
相關(guān)文章
利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù)功能
crond是Linux用來定期執(zhí)行程序的命令.這篇文章主要介紹了利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù),需要的朋友可以參考下2018-01-01
Linux batch命令詳解(在系統(tǒng)不繁忙的時(shí)候執(zhí)行定時(shí)任務(wù))
batch命令 用于在指定時(shí)間,當(dāng)系統(tǒng)不繁忙時(shí)執(zhí)行任務(wù),用法與at相似,這篇文章主要介紹了Linux batch命令(在系統(tǒng)不繁忙的時(shí)候執(zhí)行定時(shí)任務(wù)),需要的朋友可以參考下2024-02-02
Linux使用watch命令實(shí)時(shí)查看容器狀態(tài)
在現(xiàn)代的軟件開發(fā)和運(yùn)維中,Docker 容器技術(shù)已經(jīng)成為構(gòu)建、部署和運(yùn)行應(yīng)用程序的主流方式,隨著容器化技術(shù)的普及,監(jiān)控和管理容器的運(yùn)行狀態(tài)變得越來越重要,本文給大家介紹了Linux使用watch命令實(shí)時(shí)查看容器狀態(tài),需要的朋友可以參考下2024-12-12
Shell腳本實(shí)現(xiàn)C語言代碼行數(shù)統(tǒng)計(jì)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)C語言代碼行數(shù)統(tǒng)計(jì),本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05
shell Bash的數(shù)組與關(guān)聯(lián)數(shù)組的實(shí)現(xiàn)
本文主要介紹了shell Bash的數(shù)組與關(guān)聯(lián)數(shù)組的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
實(shí)現(xiàn)釋放CentOS系統(tǒng)內(nèi)存的Shell腳本分享
這篇文章主要介紹了實(shí)現(xiàn)釋放CentOS系統(tǒng)內(nèi)存的Shell腳本分享,本文對(duì)一些小內(nèi)存的VPS特別有用,需要的朋友可以參考下2014-12-12
Shell腳本入門之編寫格式與執(zhí)行方式的實(shí)現(xiàn)
這篇文章主要介紹了Shell腳本入門之編寫格式與執(zhí)行方式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Impala-shell命令參數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了Impala-shell命令參數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

