1

午前 3 時の時間依存性があり、メインフレーム ジョブ (この場合は常に成功する job_m) の正常な完了を待機することになっている Autosys ジョブ (job_a と呼びましょう) があります。Job_m はメインフレーム上の OPC スケジューラを介して実行され、ジョブの完了が Autosys に通知されます。午前2時から午前6時まで、いつでも実行できます。

Autosys がどのように機能するかについての私の理解では、job_m が完了するとデータベース内のテーブルにエントリが書き込まれ、job_a がその依存関係をチェックするときに、このテーブルを調べて job_m のステータスを確認します。このステータスは自動的にクリアされません。その結果、job_m が同じ日に実行されることのみに関心がある場合でも、job_m が最初に正常に実行された後に、ジョブの依存関係が常に満たされます。

Day 1 4am: job_m completes
Day 1 4:01am: job_a runs, since Day 1 4am run of job_m was successful
Day 2 3am: job_a runs, since Day 1 4am run of job_m was successful
Day 2 5am: job_m completes

現在提案されている回避策は、テーブルを定期的にチェックし、job_m のステータスが過去 6 時間以内に変更された場合にのみ完了するジョブ (job_c) を用意することです。

Day 1 3am: job_c starts, sees no status change for job_m within the last 6 hours
Day 1 4am: job_m completes
Day 1 4:01am: job_c completes
Day 1 4:02am: job_a runs following completion of job_c
Day 2 3am: job_c starts, sees no status change for job_m within the last 6 hours
Day 2 5am: job_m completes
Day 2 5:01am: job_c completes
Day 2 5:02am: job_a runs following completion of job_c

テーブル内の job_m のステータスをリセットするために使用できる Autosys コマンドはありますか? そうでない場合、上記で概説したものよりもこの依存関係を強制するより良い方法はありますか?

4

1 に答える 1

2

解決策は、使用している Autosys のバージョンによって異なります。最新バージョンの R11 の場合、job_c が X 時間以内に S に実行された場合にのみ実行されるように、job_a のルックバック依存関係を設定できます。

以前のバージョンでは、job_c のステータスを INACTIVE に変更する job_a の S でジョブを実行できます。job_c が非アクティブの場合、job_a はその開始条件を FALSE として認識しますが、次に開始条件が満たされたときに job_c が実行されます。

コマンドは sendevent -E CHANGE_STATUS -s INACTIVE -J job_c です。このコマンドは、Autosys スーパーユーザー アカウントとして実行する必要があります。Autosys 管理者はこれを許可しない場合があります。また、ベスト プラクティスは、オートシス イベント プロセッサ サーバーで sendevent コマンドを実行して、デュアル サーバーの高可用性を実行していて、システムがシングル サーバー モードにロールオーバーした場合に、ロールオーバー後に sendevent コマンドが機能するようにすることです。

insert_job: job_a job_type: c
command: do_something
machine: machine1
owner: my_id@machine1
conditions: s(job_c)
date_condition: 1
start_time: 03:00

insert_job: job_c job_type: c
command: do_something_else
machine: machine1
owner: mainframe@machine1
comment: "This is the mainframe job"


insert_job: job_d job_type: c
command: sendevent -E CHANGE_STATUS -s INACTIVE -J job_c
owner: superuser@autosys_server
machine: autosys_server
conditions: s(job_a) and s(job_c)
于 2009-12-03T02:24:45.090 に答える