您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Linux中如何實現BASH多進程并行處理”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux中如何實現BASH多進程并行處理”這篇文章吧。
代碼如下:
#!/bin/bash
SEND_THREAD_NUM=13
tmp_fifofile="/tmp/$$.fifo" # 腳本運行的當前進程ID號作為文件名
mkfifo “$tmp_fifofile" # 新建一個隨機fifo管道文件
exec 6<>"$tmp_fifofile" # 定義文件描述符6指向這個fifo管道文件
rm $tmp_fifofile
for ((i=0;i<$SEND_THREAD_NUM;i++));do
echo # for循環 往 fifo管道文件中寫入13個空行
done >&6
for i in `seq 100`;do # 100 次 for 循環 開始
read -u6 # 從文件描述符6中讀取行(實際指向fifo管道)
{
echo $i # 打印 i
sleep 3 # 暫停3秒
echo >&6 # 再次往fifo管道文件中寫入一個空行。
} &
# {} 這部分語句被放入后臺作為一個子進程執行,所以不必每次等待3秒后執行
#下一個,這部分的echo $i幾乎是同時完成的,當fifo中13個空行讀完后 for循環
# 繼續等待 read 中讀取fifo數據,當后臺的13個子進程等待3秒后,按次序
# 排隊往fifo輸入空行,這樣fifo中又有了數據,for語句繼續執行
pid=$! #打印最后一個進入后臺的子進程id
echo $pid
done
wait
exec 6>&- #刪除文件描述符6
exit 0
以上是“Linux中如何實現BASH多進程并行處理”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。