我試圖向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