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

问题描述:

我正在运行使用GNU Parallel的程序的几个实例,每个实例都需要一些辅助内存空间。发生这种情况后,在我当前的设置中,所有实例都会因错误而退出,因为设备上没有剩余空间。只有在用户定义的条件为真时才使用GNU Parallel运行下一个作业

仅当设备使用率低于90%时,如何设置GNU并行才能运行下一个作业? df --output=pcent "$PWD" | sed '1d;s/[^0-9]//g'

您可以使用这样的功能:

#!/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 
我可以使用 df命令,在设备使用