0

質問があります。

スクリプト内から同じジョブの複数のインスタンスを並行して実行したい:オプション " " および " "を使用してdsjob、または使用せずにジョブを呼び出すループがあります。-wait-jobstatus

スクリプトが終了する前にジョブを完了させたいのですが、ジョブ インスタンスが終了したかどうかを確認する方法がわかりません。私はwaitコマンドを使用することを考えていますが、適切ではありません。

前もって感謝します

4

3 に答える 3

2

最初に、ジョブのコンパイル オプション「Allow Multiple Instance」が選択されていることを確認する必要があります。

2番:

#!/bin/bash
. /home/dsadm/.bash_profile

INVOCATION=(1 2 3 4 5)

cd $DSHOME/bin
for id in ${INVOCATION[@]}
do
        ./dsjob -run -mode NORMAL -wait test demo.$id
done

プロジェクト -- テスト

仕事 -- デモ

$id -- 呼び出し ID

シェル scipt:guarantee の 2 行は、環境パスが機能することを保証します。

于 2011-12-23T04:52:45.650 に答える
0
  • wait または job-status オプションなしでループ内のジョブを呼び出す

  • ループの後、dsjob コマンドでジョブのステータスを確認します

例 - dsjob -jobinfo projectname jobname.invocationid

  • これに対してもう1つのループをコーディングし、その下でsleepコマンドを使用できます

  • ジョブのステータスに従って、さらにロジックを記述します

ただし、ジョブ シーケンスを作成して、異なる invoaction-id の助けを借りて、このマルチインスタンス ジョブを同時に呼び出すことをお勧めします。

  • これらが同じプロセスにある場合は、シーケンス ジョブを作成します

  • さまざまなシーケンスを作成するか、さまざまなスクリプトを直接作成して、これらのジョブを invocation-id で同時にトリガーし、同時にスケジュールします。

最良のオプションは、入力コマンドラインパラメーターに従って各ものが作成されるか、値を取得する標準の一般化されたスクリプトを作成します

例 - ジョブ名 + 呼び出し ID に基づくログ ファイル

次に、異なるパラメーターまたは呼び出しに対して同じスクリプトをスケジュールします。

于 2015-08-30T21:19:06.073 に答える
0

あなたが言うように -wait なしでジョブを実行し、次に dsjob -jobinfo を実行してループし、ジョブ ステータス 1 または 2 の出力を解析します。すべてのジョブがこのステータスを返すと、すべて終了します。

ただし、実際に実行を開始する前にジョブのステータスを確認すると、古いステータスが表示される場合があります。ジョブを実行する前に、最初にジョブ インスタンスをリセットし、ステータスが「実行されていません」になるのを待つことで、これを修正できる場合があります。

于 2012-06-16T12:08:49.353 に答える