Bash Shell實現併發多進程操作
Shell腳本里實現併發操作,需要用到
- for循環
- &後臺運行符
- wait等待所有子進程結束
思路:
我們可以通過寫一個for循環,控制每次需要批量操作的次數,然後封裝一個方法,方法裏進行批量操作,並將此方法用&符號放在後臺運行,每個循環結束前用wait函數,確保當前批量處理操作全部完成
普通腳本
#!/bin/bash
for ((i=0;i<5;i++));do
{
sleep 1;echo 1>>aa && echo ”done!”
}
done
cat aa|wc -l
rm aa
併發執行腳本
#!/bin/bash
for ((i=0;i<5;i++));do
{
sleep 3;echo 1>>aa && echo ”done!”
} &
done
wait
cat aa|wc -l
rm aa
參考:https://blog.csdn.net/wzy_1988/article/details/8811153
參考:http://bbs.51cto.com/thread-1104907-1-1.html
Shell調試腳本:
- 使用set命令調試部分腳本內容
set命令常用的調試選項:
set -n :讀取命令單並不執行
set -v :顯示讀取的所有行
set -x :顯示所有命令及其參數
提示:通過set -x 命令開啓調試功能,而通過set +x 關閉調試功能
- 使用sh -nvx
sh [-nvx] xxx.sh
參數說明:
-n:不會執行該腳本,僅查詢腳本語法是否有問題,並給出錯誤提示
-v:在執行腳本時,先將腳本的內容輸出到屏幕上,然後執行腳本。如果有錯誤,也會給出錯誤提示。
-x:將執行的腳本內容及輸出顯示到屏幕上,這是對調試很有用的參數。