質問があります。
スクリプト内から同じジョブの複数のインスタンスを並行して実行したい:オプション " " および " "を使用してdsjob
、または使用せずにジョブを呼び出すループがあります。-wait
-jobstatus
スクリプトが終了する前にジョブを完了させたいのですが、ジョブ インスタンスが終了したかどうかを確認する方法がわかりません。私はwaitコマンドを使用することを考えていますが、適切ではありません。
前もって感謝します
質問があります。
スクリプト内から同じジョブの複数のインスタンスを並行して実行したい:オプション " " および " "を使用してdsjob
、または使用せずにジョブを呼び出すループがあります。-wait
-jobstatus
スクリプトが終了する前にジョブを完了させたいのですが、ジョブ インスタンスが終了したかどうかを確認する方法がわかりません。私はwaitコマンドを使用することを考えていますが、適切ではありません。
前もって感謝します
最初に、ジョブのコンパイル オプション「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 行は、環境パスが機能することを保証します。
wait または job-status オプションなしでループ内のジョブを呼び出す
ループの後、dsjob コマンドでジョブのステータスを確認します
例 - dsjob -jobinfo projectname jobname.invocationid
これに対してもう1つのループをコーディングし、その下でsleepコマンドを使用できます
ジョブのステータスに従って、さらにロジックを記述します
ただし、ジョブ シーケンスを作成して、異なる invoaction-id の助けを借りて、このマルチインスタンス ジョブを同時に呼び出すことをお勧めします。
これらが同じプロセスにある場合は、シーケンス ジョブを作成します
さまざまなシーケンスを作成するか、さまざまなスクリプトを直接作成して、これらのジョブを invocation-id で同時にトリガーし、同時にスケジュールします。
最良のオプションは、入力コマンドラインパラメーターに従って各ものが作成されるか、値を取得する標準の一般化されたスクリプトを作成します
例 - ジョブ名 + 呼び出し ID に基づくログ ファイル
次に、異なるパラメーターまたは呼び出しに対して同じスクリプトをスケジュールします。
あなたが言うように -wait なしでジョブを実行し、次に dsjob -jobinfo を実行してループし、ジョブ ステータス 1 または 2 の出力を解析します。すべてのジョブがこのステータスを返すと、すべて終了します。
ただし、実際に実行を開始する前にジョブのステータスを確認すると、古いステータスが表示される場合があります。ジョブを実行する前に、最初にジョブ インスタンスをリセットし、ステータスが「実行されていません」になるのを待つことで、これを修正できる場合があります。