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

