我写了以下bash脚本:
function getqsubnumber {
# Return how many simulations ($qsubnumber) are currently running
qsubnumber=`qstat | grep p00 | wc -l`
return $qsubnumber
}
getqsubnumber
qs=$?
if [ $qs -le $X ]
then
echo 'Running one more simulation'
$cmd # submit one more job to the cluster
else
echo 'Too many simulations running ... Sleeping for 2 min'
sleep 120
我的想法是我在集群上提交作业。如果同时运行的X
个作业超过X=50
,我想等待2分钟。
该代码适用于X=200
和X=400
。由于某些未知原因,它不适用于(1..10).flat_map { |i| i.even? ? [i, i**2] : i }
。知道为什么吗?该脚本永远不会等待2分钟,它会继续提交作业。
答案 0 :(得分:7)
Unix进程的返回值(以及一个shell函数就像一个)只能在一个字节的范围内,i。即0 ... 255(在某些情况下,范围是-128 ... + 127)。
要返回更大范围内的值,我建议使用stdout作为通道来提供结果:
function getqsubnumber {
# Return how many simulations ($qsubnumber) are currently running
qstat | grep p00 | wc -l
}
qs=$(getqsubnumber)