4

PBS クラスターでジョブを実行するとき、ジョブログ (-o ファイル) を 2 か所に置きたいと思うことがあります。1 つは$PBS_O_WORKDIRすべてをまとめるためのもので、もう 1 つ${HOME}/jobOuts/は grep/awking/etc...

コマンド ラインからテストを実行すると、次のように動作しteeます。

echo "hello" | qsub -o `tee $HOME/out1.o $HOME/out2.o $HOME/out3.o`

しかし、これを PBS スクリプトに入れようとすると、PBS スクリプトと qsub に入れても機能しません。

####Parameterized PBS Script ####
#PBS -S /bin/bash
#PBS -l nodes=1
#PBS -l walltime=0:01:00
#PBS -j oe
#PBS -o `tee TEE_TEST.o TEE_TEST.${PBS_JOBID}.o`
#PBS -M me@email.com
#PBS -m abe
#PBS -V

cd $PBS_O_WORKDIR

echo `date`

ここにqsubとエラーがあります:

qsub  TEST.pbs
qsub: directive error: -o `tee TEE_TEST.o TEE_TEST.${PBS_JOBID}.o`

以下でいくつか他のことを試しましたが、何も機能しませんでした。

1 行 (カンマ、セミコロン、スペース):

#PBS -o ${PBS_JOBNAME}.${PBS_JOBID}.o,${HOME}/jobOuts/${PBS_JOBNAME}.${PBS_JOBID}.o
#PBS -o ${PBS_JOBNAME}.${PBS_JOBID}.o,${HOME}/jobOuts/${PBS_JOBNAME}.${PBS_JOBID}.o
#PBS -o ${PBS_JOBNAME}.${PBS_JOBID}.o ${HOME}/jobOuts/${PBS_JOBNAME}.${PBS_JOBID}.o

そして2行:

#PBS -o ${PBS_JOBNAME}.${PBS_JOBID}.o
#PBS -o ${HOME}/jobOuts/${PBS_JOBNAME}.${PBS_JOBID}.o

2 つの動作するライナーは 2 番目の -o オプションを使用するだけで、1 つのライナーは機能しません。

助言がありますか?出来ますか?

4

2 に答える 2

0

コマンドラインの例が機能したことに非常に驚いています。あなたの仕事は実際に実行されましたか?私の推測では、実行中です

echo "hello" | qsub -o `tee $HOME/out1.o $HOME/out2.o $HOME/out3.o`

実行中のジョブを短絡し、実際には「hello」を取得してティーに渡します。私の推測では、bash をもう少しよく知っている人なら、ここで実際に何が起こっているのかを説明できると思います。

あなたが要求しているものを機能させるために私が考えることができる唯一の方法は、スクリプトに何かを書いてもらうことです. これを機能させるには、計算ノードからアクセスできるネットワーク ファイル システム上に場所を配置する必要があります。

于 2013-04-29T23:16:56.560 に答える