Shell-Script
Unix中如何限制後台程序的數量
我必須執行 100 個部分的腳本,同時確保在任何時間點只有 10 個部分並行執行。
下面的腳本將同時觸發所有 100 個程序:-
for i in {1..100} do nohup ksh my_background_script.ksh -mod ${i} & done
有兩種常用的工具
xargs
和 GNUparallel
:
xargs
較舊,預設情況下經常安裝,但更受限制。你會像這樣使用它:seq 1 100 | xargs -P 10 -I {} nohup ksh my_background_script.ksh -mod {} &
告訴它
-P 10
並行執行 10 個程序。 2. GNUparallel
雖然沒有預設安裝在許多系統上,但應該可以隨時用於任何 GNU/Linux 系統,並且比xargs
. 你會像這樣使用它(可能細節取決於你正在執行的東西):parallel -j 10 nohup ksh my_background_script.ksh -mod ::: {1..100}
可以在此處找到有關這兩個程序及其各自用途的更多詳細資訊:GNU parallel vs & (I mean background) vs xargs -P