我目前正在编写一个脚本,我想在其中使用数组长度作为条件参数。我可以像这样得到数组的长度:
myarr=$(squeue | grep cjones903 | awk '{print $3}' )
echo ${#myarr}
但是这不会起作用,因为我需要迭代地评估长度,以便在长度低于阈值时继续。
我希望能够做到这一点:
while [ length is > x] do;
sleep 60;
else:
答案 0 :(得分:2)
好的,因为我们似乎已经在评论中削减了它,通过检查squeue
调用返回的行数来检查运行的作业数量,这里有一个小脚本我正在修改在讨论期间。从中可以获得任何进一步的想法。进一步研究的一件事是锁定文件(或 lock dir ),以确保一次只运行一个脚本实例(StackOverflow上已有许多示例)。祝你好运:
#!/bin/bash
## consider setting lock file so only 1 instance runs
# (many examples on SO)
## simple declarations
declare -i threshold=10 ## your limit, njobs above, sleep
declare -i njobs="$threshold" ## threshold number of jobs limit
declare -i nseconds=60 ## seconds to sleep
while :; do ## outer loop - runs perpetually
njobs=$(squeue | grep cjones903 | wc -l) ## get no. of jobs
while ((njobs > threshold)); do ## test
sleep "$nseconds" ## sleep if above
njobs=$(squeue | grep cjones903 | wc -l) ## get no. of jobs
fi
## code to submit new batch of jobs here
# sleep a couple to let jobs distribute
done
exit 0