只有在用户定义的条件为真时才使用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
命令,在设备使用