Shell-Script

Unix中如何限制後台程序的數量

  • November 4, 2020

我必須執行 100 個部分的腳本,同時確保在任何時間點只有 10 個部分並行執行。

下面的腳本將同時觸發所有 100 個程序:-

for i in {1..100}
do
   nohup ksh my_background_script.ksh -mod ${i} &
done

有兩種常用的工具xargs和 GNU parallel

  1. 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

引用自:https://unix.stackexchange.com/questions/617994