我有权访问100个节点。将作业提交给所有100个节点后,我想在180秒的睡眠时间后进行查询以找出队列中还有多少作业。如果队列中有一些作业,则bash上的输出将指示挂起的作业数。如果所有作业都开始在100个节点上运行,那么我想提交新作业,直到所有作业完成为止。当所有作业完成时,bash应该退出while循环。
我已经写了以下bash代码行
n=1
while [ $n -gt 0 ]; do
if (($(qselect -u username | grep 'Q' | wc -l) > 0)); then
echo "Jobs in Queue=$(qselect -u username | grep 'Q' | wc -l)"
else
python parallel_jobs.py
n=$(qselect -u username | grep 'Q' | wc -l)
fi
sleep 180
done
我发现bash仅在1次通过之后才退出while循环,这与预期相反。
我让它像这样工作:
#!/bin/bash
n=1
while [ $n -gt 0 ]; do
if [ $(qstat -u username | grep 'Q' | wc -l) -gt 1 ]; then
echo "Jobs in Queue=$(($(qstat -u username | grep 'Q' | wc -l)-1))"
else
python parallel_jobs.py
sleep 180
n=$(($(qstat -u username | grep 'Q' | wc -l)-1))
fi
done