Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux系统不忙时分派任务_Linux_Multithreading_Bash_Shell_Unix - Fatal编程技术网

如何在Linux系统不忙时分派任务

如何在Linux系统不忙时分派任务,linux,multithreading,bash,shell,unix,Linux,Multithreading,Bash,Shell,Unix,我正在使用一台12核24线程的Linux机器来执行以下任务。每个任务都是独立的 while read parameter do ./program_a $parameter $parameter.log 2>&1 & done < parameter_file 限制已调度任务的数量。但这是一种确定系统是否繁忙的隐式方法。还有其他想法吗?听起来对GNU或类似机构来说是个不错的工作……grep是多余的。相反,在awk:free_Mem=$free-g | awk

我正在使用一台12核24线程的Linux机器来执行以下任务。每个任务都是独立的

while read parameter
do
    ./program_a $parameter $parameter.log 2>&1 &
done < parameter_file

限制已调度任务的数量。但这是一种确定系统是否繁忙的隐式方法。还有其他想法吗?

听起来对GNU或类似机构来说是个不错的工作……grep是多余的。相反,在awk:free_Mem=$free-g | awk'/Mem/{print$4}'中打印前使用/Mem/,并且$free_Mem<10应该是$free_Mem>10@jwpat7请随意编辑我的帖子。我只是把他的代码加上了繁忙的等待。
while read parameter
do
    #for instance using free
    while 1; do
      free_mem=`free -g | awk '/Mem/{print $4}'`
      if (( $free_mem > 10 )); then
        break
      fi
      sleep 1 # wait so that some tasks might finish
    done
    ./program_a $parameter $parameter.log 2>&1 &    
done < parameter_file
ps aux | grep "program_a " | grep -v "grep" | wc -l
while read parameter
do
    #for instance using free
    while 1; do
      free_mem=`free -g | awk '/Mem/{print $4}'`
      if (( $free_mem > 10 )); then
        break
      fi
      sleep 1 # wait so that some tasks might finish
    done
    ./program_a $parameter $parameter.log 2>&1 &    
done < parameter_file