我拼凑了一个shell脚本来提交群集上的多个作业,它似乎没有给我一个错误消息,但输出文件丢失,错误日志文件也是空的。脚本应该做的是1.)制作一堆新目录,2。)将四个文件复制到每个(mainparams,extraparams,infile和structurejobsubmissionfile)。然后将每个提交给集群以使其运行结构,同时在每个第十个目录中更改mainparams文件中的一个参数(即' s / changethis /' $ k' / g&# 39;线)。
在前端测试运行它没有错误,结构程序在群集上是最新的,并且群集管理员不会看到任何错误。谢谢!
#!/bin/bash
reps=10
numK=10
for k in $(seq $numK);
do
for i in $(seq $reps);
do
#make folder name (ex. k4rep7)
tmpstr="k${k}rep${i}"
#echo "Making folder and filename $tmpstr"
#make the new folder
mkdir $tmpstr
#go to that folder
cd ./$tmpstr
#copy in the input files
cp ../str_in/* ./
#modify the recently copied input file here so source file remains the same
cp ./mainparams ./temp.txt
#change maxpops to current value of k and the directory for the files to the current directory
sed -e 's/changethis/'$k'/g' -e "s:pathforrunningstructurehere:$PWD:g" ./temp.txt > ./mainparams
#get rid of temporary file
rm ./temp.txt
#inside $i so run STRUCTURE here
qsub -q fnrgenetics -l nodes=1:ppn=1,walltime=20:00:00 structurejobsubmissionfile
#go back to parent directory
cd ../
done
done
答案 0 :(得分:0)
我看不到任何明显错误,但我认为你找到答案的地方在于更好的记录和更好的错误检查。你不应该检查的一些事情:
$tmpstr
是否正确创建? (将在磁盘已满时失败或未正确设置权限)str_in/
,是一个目录吗?mainparams
?qsub
?$PATH
您可以滚动自己的错误记录功能,或使用log4bash
之类的包