我试图向SGE(FWIW,它是Gromacs分子动力学模拟序列)提交(一系列)作业,其中所有作业除了后缀之外都是相同的,例如input01
,input02
等。编写命令以后缀由命令序列正确处理的方式运行。如何正确地将环境变量传递给Sun Grid Engine?
但是,我找不到让exec环境接收该变量的方法。根据qsub
手册页,-v var
应该这样做。
$ export i=19
$ export | grep ' i='
declare -x i="19"
$ env | grep '^i='
i=19
于是,我提出以下脚本(run.sh
),看看它是否接受:
if [ "x" == "x$i" ]; then
echo "ERROR: \$i not set"
else
echo "SUCCESS: \$i is set"
fi
我提交作业如下(在同一个会话的export
命令以上):
$ qsub -N "test_env" -cwd -v i run.sh
Your job 4606 ("test_env") has been submitted
错误流是空的,并且输出流具有:
$ cat test_env.o4606
ERROR: $i not set
我也尝试下面的命令,不成功:
$ qsub -N "test_env" -cwd -v i -V run.sh
$ qsub -N "test_env" -cwd -V run.sh
$ qsub -N "test_env" -cwd -v i=19 -V run.sh
$ qsub -N "test_env" -cwd -v i=19 run.sh
如果我添加一行i=19
到run.sh
开始,那么输出是:
$ cat test_env.o4613
SUCCESS: $i is set as 19
现在我正在考虑产生每个作业的单个文件,基本上是相同的,但将有一个i=xx
行作为第一个。它看起来不太实际,但它会是一个解决方案。
会有更好的解决方案吗?
'的qsub -N“test_env” -cwd -v =“$ I”运行.sh'应该可以正常工作。 – 2015-08-13 18:31:50