2016-10-14 3 views
0

私の部門のコンピューティングクラスタをSun Grid Engineで使用しています。複数のqsubコマンドを同時に使用する

複数のRジョブを実行する必要がある場合 私は通常、「R CMD BATCH r01.r」、「R」という名前のs01.sh、s02.sh、...、s50.shという名前のシェルスクリプトファイルを作成しますCMD BATCH r02.r '、...、' R CMD BATCH r50.r 'を内容とする。

次に、「PUTTY」を開いてログインし、「qsub s01.sh」、「qsub s02.sh」などと入力する必要があります。

何百ものジョブがある場合、手動で100個のジョブを入力するのは本当の労力です。 この複数の「qsub」コマンドを同時に実行する方法はありますか?

答えて

1

qsubコマンドを順番に実行する必要があると思います。qsub自体がかなり速くなければならないためです。 (提出されたコマンドはおそらく並行して実行されます)。

ループが必要です。

すでにr*.rファイルを作成したと仮定すると、これは小さなシェルスクリプトで行うことは簡単です:

#!/bin/bash 

for file in r*.r ; do 
    script=$(echo $file | sed 's/^r/s/;s/\.r$/.sh/') 
    ( 
     echo "#/bin/sh" 
     echo "R CMD BATCH $file" 
    ) > $script 
    chmod +x $script 
    qsub $script 
done 
+0

ありがとうございますが、私はまだ何も理解していません。ですから、コードを直接入力するか、blahblah.shファイルを作成し、コードを.shファイルに含めるべきですか? – user67275

+0

@ user67275:後者ははるかに簡単です。私が書いたコマンドを含む 'submit-jobs.sh'というスクリプトを作成し、' chmod + x submit-jobs.sh'を実行してからスクリプトを実行します。 (私はそれをテストしていないことに注意してください、私は 'qsub'を私のシステムに持っていません。) –

1

は、私が実行されるスクリプトは、現在のフォルダにあることを前提としています。

for file in s*.sh; do; qsub $file; done 
関連する問題