0

私の問題は次のとおりです。何かを実行してから、次のように 800 の bsub ジョブを呼び出す bash スクリプトがあります。

pids=
rm -f ~/.count-*
for i in `ls _some_files_`; do
    of=~/.count-${i}
    bsub -I "grep _something_ $i > $of" &
    pids="${!} ${pids}"
done
wait ${pids}

次に、スクリプトは出力ファイル $of を処理し、結果をエコーし​​ます。

問題は、次のような行がたくさんあることです。

Job <7536> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on hostA>> 

実際には、上記の 3 行の 800 倍です。この LSF 行を抑制する方法はありますか?

上記のループで試しました:

bsub -I "grep _something_ $i > $of" &> /dev/null

LSF の冗長性を取り除きましたが、一度に 800 ジョブのほぼすべてを送信してから実行に 4 分もかからず、一度に送信されるジョブはわずかで、スクリプトが終了するまで 1 時間以上待たなければなりませんでした。

AFAIK lsf bsub には、この冗長性をすべて抑制するオプションがないようです。ここで何ができますか?

4

2 に答える 2

2

この出力を抑制するには、bsub の前に環境変数 BSUB_QUIET を任意の値 (空を含む) に設定します。したがって、ループの前に、次を追加できると言います。

export BSUB_QUIET=

その後、通常に戻したい場合は、次のようにして変数をクリアできます。

unset BSUB_QUIET

それがあなたを助けることを願っています。

于 2013-09-11T16:09:47.443 に答える
0

ジョブの依存関係を使用してログファイルを後処理することを検討しましたか?

1) 各「子」ジョブを実行し (「-Is」を削除)、IO を個別の出力ファイルに出力します。各ジョブは、ジョブ名を付けてサブミットする必要があります (-J を参照)。ジョブ名は配列を形成できます。

2) あなたの最終的な仕事は、子どもたちの仕上げ次第です (-w を参照)。

クラスター全体で同時に実行することに加えて、このアプローチのもう 1 つの利点は、プロセス全体が IO の問題の影響を受けにくいことです。

于 2013-07-09T22:08:29.390 に答える