我必须以 100 个部分运行脚本,同时确保在任何时间点只有 10 个部分并行运行。
下面的脚本将同时触发所有 100 个进程:-
for i in {1..100}
do
nohup ksh my_background_script.ksh -mod ${i} &
done
答案1
有两种常用的工具,xargs
GNU parallel
:
xargs
较旧,通常默认安装,但更有限。你可以像这样使用它:seq 1 100 | xargs -P 10 -I {} nohup ksh my_background_script.ksh -mod {} &
告诉
-P 10
它并行运行 10 个进程。GNU
parallel
虽然在许多系统上没有默认安装,但应该可以随时用于任何 GNU/Linux 系统,并且比xargs
.您可以像这样使用它(可能详细信息取决于您正在运行的内容):parallel -j 10 nohup ksh my_background_script.ksh -mod ::: {1..100}
有关这两个程序及其各自用途的更多详细信息可以在此处找到:GNU 并行 vs & (我的意思是背景) vs xargs -P