我目前正试图在我的Uni上的“大电脑”上运行一个阵列作业。
我是Unix和bash的新手,我一直很难让它工作。
设置文件夹如下:
model1
- model1.inp
- model1.num
model2
- model2.inp
- model2.num
startup.sh
runAModel.sh
modelArray.sh
由于限制我可以运行一份工作多久,我被要求分解我的模拟。因此,每次模型读取输入文件.inp时,我需要运行每个模型5次,并为后续运行输出另一个输入文件。
下面的代码一直工作到一周左右,但它似乎不再起作用了。我想知道我是不是在那里弄乱了什么。
我怀疑它可能位于qcmd="qsub -N $modelName -t 1:5 ../../modelArray.sh"
的{{1}}行,我应该将runAModel.sh
替换为1:5
,但这似乎不起作用。
我使用qstat来查看我的工作以及我希望看到的5个排队工作列表,我只看到一个。
我有三个文件要运行:
1-5
:
startup.sh
find . -mindepth 2 -type d -exec ./runAModel.sh {} \;
:
runAModel.sh
和#!/bin/bash
echo starting model in $1
cd $1 # go into the model directory
modelName=$(basename $PWD)
for f in *
do
dos2unix $f
done
qcmd="qsub -N $modelName -t 1:5 ../../modelArray.sh"
qq=`$qcmd` # runs a qsub command
# extract the job number
qt=`echo $qq | awk '{print $3}'`
jobid=${qt%%.*}
qrls $jobid.1
:
modelArray.sh