(一連の) ジョブを SGE に送信しようとしています (FWIW、Gromacs 分子動力学シミュレーションのシーケンスです)。すべてのジョブは、 、 などの接尾辞を除いて同一input01
ですinput02
。サフィックスが一連のコマンドによって適切に処理されるように実行します。
ただし、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
私は現在、ジョブごとに 1 つのファイルを生成することを検討しています。これは基本的に同じですがi=xx
、最初の行が含まれます。あまり実用的ではないように見えますが、解決策になるでしょう。
より良い解決策はありますか?