如何在Bash中启动大量快速作业

如何在Bash中启动大量快速作业,bash,cygwin,task,Bash,Cygwin,Task,我有3000个非常快速的作业要运行,平均需要2/3秒 作业列表在一个文件中,我想控制打开的作业数量 然而,在后台(&line)启动作业的过程本身似乎需要一些时间,因此,一些作业在“INTOTAL”数量开始之前就已经完成了 因此,我没有有效地使用我的32核 该方法是否比下面的方法更好 #!/bin/sh #set -x INTOTAL=28 while true do NUMRUNNING=`tasklist | egrep Prod.exe | wc -l` JOBS=

我有3000个非常快速的作业要运行,平均需要2/3秒

作业列表在一个文件中,我想控制打开的作业数量

然而,在后台(&line)启动作业的过程本身似乎需要一些时间,因此,一些作业在“INTOTAL”数量开始之前就已经完成了

因此,我没有有效地使用我的32核

该方法是否比下面的方法更好

#!/bin/sh
#set -x

INTOTAL=28


while true
do

    NUMRUNNING=`tasklist | egrep Prod.exe | wc -l`

    JOBS=`cat jobs.lst | wc -l`
    if [ $JOBS -gt 0 ]
    then

        MAXSTART=$(($INTOTAL-$NUMRUNNING))
        NUMTOSTART=$JOBS

        if [ $NUMTOSTART -gt $MAXSTART ]
        then
            NUMTOSTART=$MAXSTART
        fi
        echo 'Starting: '$NUMTOSTART 
        for ((i=1;i<=$NUMTOSTART;i++))
        do
            JOB=`head -n1 jobs.lst`
            sed -i 1d jobs.lst

            /Prod $JOB &

        done
        sleep 2
    fi


    sleep 3

done
#/垃圾箱/垃圾箱
#集合x
总计=28
虽然是真的
做
NUMRUNNING=`tasklist | egrep Prod.exe | wc-l`
JOBS=`cat JOBS.lst | wc-l`
如果[$JOBS-gt 0]
然后
MAXSTART=$($INTOTAL-$NUMRUNNING))
numstatart=$JOBS
如果[$NUMTOSTART-gt$MAXSTART]
然后
numstatart=$MAXSTART
fi
echo“开始:”$NUMTOSTART

对于((i=1;i您可能需要查看,根据发行说明,您应该能够在Cygwin上安装它。然后并行运行任务可以非常简单,如下所示:

parallel /Prod {} < jobs.lst

您可能想看看,根据发行说明,您应该能够在Cygwin上安装它。然后并行运行任务可以非常简单,如下所示:

parallel /Prod {} < jobs.lst

您可能想看看,根据发行说明,您应该能够在Cygwin上安装它。然后并行运行任务可以非常简单,如下所示:

parallel /Prod {} < jobs.lst

您可能想看看,根据发行说明,您应该能够在Cygwin上安装它。然后并行运行任务可以非常简单,如下所示:

parallel /Prod {} < jobs.lst

@arco444如果我这样做,我会得到-bash:fork:retry:Resource temporary unavailable或在这里搜索
[bash]xargs
。祝你好运。@arco444如果我这样做,我会得到-bash:fork:retry:Resource temporary unavailable或在这里搜索
[bash]xargs
。祝你好运。@arco444如果我这样做,我会得到-bash:fork:retry:Resource暂时不可用,或者在这里搜索
[bash]xargs
。祝你好运。@arco444如果我这样做,我会得到-bash:fork:retry:Resource暂时不可用,或者在这里搜索
[bash]xargs
。祝你好运。谢谢,但如果可能的话,我希望保留我现有的结构,因为它对更大的作业非常有效
并行
对更大的作业也非常有效。它给了你很多:作业的输出就像它们与
-k
串行运行一样,用
--bar
选项显示进度条,resum从上一个未完成的工作开始,使用
--joblog
--resume
…谢谢,但如果可能的话,我希望保留我现有的结构,因为它对更大的工作非常有效
并行
对更大的工作也非常有效。它给了你很多:作业的输出,就像它们与
-k
串行运行一样如何使用
--bar
选项的进度条,使用
--joblog
--resume
从上一个未完成的工作恢复…谢谢你,但我希望尽可能保留我现有的结构,因为它对更大的工作非常有效
并行
对更大的工作也非常有效obs就像是用
-k
串行运行一样,用
--bar
选项显示进度条,用
--joblog
--resume
从上一个未完成的工作中恢复过来……谢谢,但如果可能的话,我希望保留我现有的结构,因为它对更大的工作非常有效
并行
在r更大的作业。并且给了您很多:作业的输出,就像它们与
-k
串行运行一样,使用
--bar
选项显示进度条,使用
--joblog
--resume
从上一个未完成的作业恢复。。。