2017-02-10 9 views
3

私はバックグラウンドでsrunを使ってslurmジョブを実行しようとしていました。残念なことに、私はドッカーを介して物事を実行しなければならないという事実のために今はsbatchを使用するのが面倒なので、私はすべて一緒にそれを避けることができるかどうかを調べようとしています。私の観察からSBATCHではなくSRUNを使用してSLURMジョブをバックグラウンドで実行できますか?

、私はSRUNを実行するたびに、言う:

srun docker image my_job_script.py 

と私はコマンドを実行している(すべてのprint文の受信を回避するため)およびかどうかを確認するために、別のターミナルウィンドウを開いたウィンドウを閉じますコマンドがまだ実行されていると、実行中のスクリプトが何らかの理由でキャンセルされたようです。それはsbatchを通してではないので、エラーログ(私が知る限り)を持ったファイルを私に送るわけではないので、なぜそれが閉じられたのか分かりません。

は、私も試してみました:

srun docker image my_job_script.py & 

は、端末に私に戻って制御を与えます。残念なことに、私がそれを行うなら、私は避けようとしている端末の画面に物事を印刷し続けます。

本質的には、sshでリモートコンピュータにログインしてからsrunコマンドを実行しますが、ssh接続の通信を終了すると、srunコマンドが自動的に終了するようです。これをやめる方法はありますか?

scancelでキャンセルしない限り、本質的にスクリプトを実行してキャンセルしないようにしたいのですが、画面に印刷しないでください。だから私の理想的なソリューションです:

  1. は、私はsshセッションからログアウトしても
  2. が近い場合、私は
  3. が私を実行し続けるコマンドを送ったところからでも、窓を私SRUNスクリプトを実行し続けるSRUNスクリプトを実行し続けますsrunスクリプトを実行して、srunセッションを終了し、私の画面に印刷しないでください(つまり、本質的にバックグラウンドで実行されます)。

これは私の考えの解決策です。人々が知っているよう

sbatch docker image my_job_script.py 

しかし、:

sbatchの問題を知りたい好奇心旺盛群集のための

、私は(理想的なソリューションです)を行うことができるようにしたいですsbatchは "バッチ"スクリプトではないコマンドdockerを受け取るため、動作しません。基本的に簡単な解決策(それは本当に私の場合は動作しません)バッチスクリプトでドッキングウィンドウのコマンドをラップすることです:

#!/usr/bin/sh 
docker image my_job_script.py 

残念ながら、私は実際に多くの情報をエンコードするために、私のバッチスクリプトを使用しています(ソートのような設定ファイル)を実行しているタスクの。そうすることは、その基礎となるファイルが変化しているために私が行う仕事に影響するかもしれません。これは、バッチスクリプトのコピーを基本的に作成するので、ジョブをsbatchに直接送信することによって回避されます(この質問に記載されているとおり:Changing the bash script sent to sbatch in slurm during run a bad idea?)。だから私の問題の本当の解決策は、実際に私のバッチスクリプトにスクリプトが必要とするすべての情報が含まれていて、何とかでPythonコールドッカーと同時にすべての情報を渡すことです。残念ながら、情報の中には関数ポインタとオブジェクトがありますので、どのようにしてドッカーコマンドにそのようなものを渡すのか、私には明らかではありません。


また、問題を解決してバッチスクリプトを使用する代わりに、ドッカーをsbatchに直接実行することもできます。

+1

と使用&**と**と出力をリダイレクト - O **:

だから、ジョブはバックグラウンドでとリダイレクト出力を使用して起動することができますか?私は確信していませんが、 'srun docker image my_job_script.py 'が出力を除いてあなたのために働くかどうかは、' srun -o output.txt docker image my_job_script.py& 'です。 ** - e **で_stderr_をリダイレクトすることもできます。 – siserte

+0

@SergioIserteはこれまで働いていたようだ...今は唯一の注意点は、私が6時間ごとに仕事を殺したというスラムの設定だということだ。だから6時間後に再びそれを実行しようとすると、それは私の元のコマンドを呼び出すかどうかは不思議です。 '-o'引数の引数が絶対パス(または他の予期しない警告が出る可能性があります) –

答えて

3

出力stderrののオプション-oSTDOUT-eでリダイレクトすることができます。 **

$ srun -o file.out -e file.errr docker image my_job_script.py & 
+0

陽気なのは、' sbatch'がどのように実装されているのか、それとも何が違うのかが分かります。私は 'sbatch'がバッチスクリプトのコピーを作成することを知っています。これも私の 'my_job_script.py'のコピーを作成しますか? –

+1

欲しいもの:http://groups.google.com/forum/#!topic/slurm-devel/wKaUEOzuQq4 – siserte

関連する問題