Unix下如何限制后台进程数量

Unix下如何限制后台进程数量

我必须以 100 个部分运行脚本,同时确保在任何时间点只有 10 个部分并行运行。

下面的脚本将同时触发所有 100 个进程:-

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

答案1

有两种常用的工具,xargsGNU 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 并行 vs & (我的意思是背景) vs xargs -P

相关内容