5

コーディングの解決策ではなく、一般的なアドバイスを探しています。基本的に、bsub 経由でジョブを送信する場合、次のいずれかを指定することで、Stdin/Stdout のログを取得できます。

bsub -o log.txt      % sends StdOut to log.txt
bsub -u me@email     % sends StdOut to email

これらはどちらも優れていますが、私のプログラムは bsub に送信されるとフォルダーを作成し、リモート サーバーに保存します。本質的に私はしたい

a) フォルダーとその内容を取得する b) ジョブの終了時にこれを自動的に行う

技術的には を使用できscp -rますが、これは手動で行う必要があります。ジョブが終了したときに電子メール アラートを受け取った場合はそれほど悪くはありませんが、それでも手動で行う必要があります。

b)に:

bsub が実際の結果を取得するための特別なフラグは表示されず、StdOut のみが表示されます。仕事の時間を使用して設定するスクリプトを作成できると思いますsleepおそらく、安全のために少し長くなります)。

#!/bin/bash

scp myfile.txt server:main/subfolder
ssh bsub < myprogram.sh -u my@email
sleep <job-time>
scp -r server:main/subfolder result_folder 

ただし、ログアウトされたり、ジョブが終了する前にスクリプトが終了したりすることについて少し心配しています。

誰か提案はありますか?

私は基本的に、ユーザーがファイルを送信し、ファイルをリモートで分析し、ジョブの開始/終了時にユーザーにメールを送信し、結果を自動的にローカル/Webサーバーに取得し、ユーザーが選択できるというメールを受け取るインターフェイス(将来的にはWebサイト)が必要です彼らの結果をアップします。

それでも一歩ずつ!

4

2 に答える 2

1

ブロッキング モード (bsub -K) でジョブをサブミットできます。これにより、bsubジョブが完了したとき、またはエラーが見つかったときにのみコマンドが返されます。

ドキュメントからの引用:

-K

ジョブを送信し、ジョブが完了するのを待ちます。ジョブ投入時に「ディスパッチ待ち」のメッセージを端末に送信します。ジョブが完了すると、「ジョブが終了しました」というメッセージが端末に送信されます。lsf.conf で LSB_SUBK_SHOW_EXEC_HOST が有効になっている場合、実行ホストでジョブの実行が開始されると、「Starting on execution_host」というメッセージも送信されます。

ジョブが完了するまで、別のジョブを送信することはできません。これは、ジョブ スクリプトなど、続行するためにジョブの完了が必要な場合に役立ちます。一時的な障害のためにジョブを再実行する必要がある場合、bsub はジョブが正常に終了した後に戻ります。bsub は、ジョブ スクリプトが終了コードに基づいて適切なアクションを実行できるように、ジョブと同じ終了コードで終了します。保留中にジョブが終了した場合、bsub は値 126 で終了します。

-K オプションを -I、-Ip、または -Is オプションと一緒に使用することはできません。

次に、scpまたは同様のプログラムを実行して、電子メールをチェックせずにリモート ホストから結果を自動的にコピーできます。:)

セッションがログアウトした場合にラッパー スクリプトが強制終了されないように、ラッパー スクリプトの前にnohupを付けることもできます。

于 2015-10-03T16:48:25.957 に答える