仅当用户定义的条件为真时才使用GNU Parallel运行下一个作业

时间:2017-08-03 05:25:54

标签: linux gnu-parallel

我正在使用GNU Parallel运行多个程序实例,每个实例都需要在辅助内存中占用一些空间。碰巧的是,稍后在我当前的设置中,所有实例都会因错误退出,因为设备上没有剩余空间。

如果设备使用率低于90%,如何设置GNU Parallel才能运行下一个作业?我可以使用df命令获取设备使用情况:df --output=pcent "$PWD" | sed '1d;s/[^0-9]//g'

1 个答案:

答案 0 :(得分:2)

您可以使用以下功能:

#!/bin/bash

# define a function which "parallel" will call
doit() {
   # wait forever for sufficient resources
   while :; do
      pcnt=$(df --output ...)
      [ $pcnt -lt 90 ] && break
      sleep 5
   done
   # do job now as resources are available

}

# export function to subshells started by "parallel"
export -f doit

# start "parallel" - probably one of 3 methods:
#   parallel -a jobs.txt doit
#   parallel doit ::: jobs
#   generate_jobs | parallel doit