6.2.21 エラー注入モードの有効/無効を設定する(joberrmodeコマンド)
デバッグ中のジョブ定義スクリプトのエラー注入モードを有効または無効にするには,joberrmodeコマンドを実行します。joberrmodeコマンドの短縮形は"jem"です。joberrmodeコマンドの形式を次に示します。
joberrmode {on|off}
- onを選択した場合
エラー注入モードを有効にします。これによって,ジョブ内でエラーが発生した場合のケースをテストできます。すべての実行パスを実行してもC1実行比率が100%とならない場合に,エラーをシミュレートするために使用します。C1実行比率が100%とならないケースについては,「(5) C1実行比率100%とならないケース」を参照してください。
エラー注入モードが有効な場合は次のように動作します。このとき,終了コードは変更しません。
run属性にabnormalまたはalwaysが指定されている場合,ジョブステップを実行する。
run属性が省略されているまたはnormalが指定されている場合,ジョブステップを実行しない。
ジョブステップ外のコマンドは実行しない。
ステップ正常ブロック内でエラー注入した場合,そのステップのステップエラーブロック内のコマンドは実行する。onError属性にcontが指定されていても,そのステップ内の後続のコマンドは実行しないで,ステップエラーブロックを実行する。
エラー注入モードがonの場合にrunコマンドを実行すると,エラー注入モードはoffに戻ります。
CMDRC_CMDGRP_CHECKパラメータにFUNCTIONを指定した場合,関数内で停止中に「joberrmode on」を実行しても,エラー注入モードはonに変更できません。
- offを選択した場合
エラー注入モードを無効にします。
- 実行例1
次に示すジョブ定義スクリプトを実行した場合について説明します。左側の行番号は,実行結果に出力される行番号との対応づけのため記載しています。
001 #!/bin/sh 002 003 #-adsh_step_start STEP001 ←STEP001開始 004 005 ./cmd1 ←ステップ正常ブロック部 006 007 #-adsh_step_error ←ステップエラーブロック部 008 009 ./cmd2 010 011 #-adsh_step_end 012 013 ./cmd3 014 015 #-adsh_step_start STEP002 -run abnormal ←STEP002開始 異常時に実行 016 017 ./cmd4 ←ステップ正常ブロック部 018 019 #-adsh_step_error ←ステップエラーブロック部 020 021 ./cmd5 022 023 #-adsh_step_end 024 025 ./cmd6 026 027 echo JOB01-ended
- 実行結果1
ステップ外で停止し,joberrmodeコマンドでエラー注入モードを有効にした場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。
[jobuser1@HOST01 joberrmode]$ adshexec -d joberrmode.ash ←1. KNAX7901-I ジョブコントローラは,ジョブ終了時にすべての非同期実行プロセスの完了を待ちます。 KNAX0724-I ジョブ識別子を割り当てました。Jobid=000004 (adshdb) b 2 ←2. KNAX7015-W 指定した行番号("2")にブレークポイントを設定できません。次に設定できる行にブレークポイントを設定します。 KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=3 (adshdb) b 17 ←3. KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17 (adshdb) run ←4. KNAX7007-I ジョブ定義スクリプトの実行を開始します。: /home/jobuser1/joberrmode/joberrmode.ash KNAX0724-I ジョブ識別子を割り当てました。Jobid=000005 KNAX0091-I ADSH000005 ジョブが開始しました。 KNAX7902-I ジョブコントローラは,"端末入力モード"で動作します。 KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=3 ←5. KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。 3: #-adsh_step_start STEP001 現在位置: #-adsh_step_start STEP001 (adshdb) info status ←6. joberrmode:off ←7. (adshdb) joberrmode on ←8. KNAX7126-I エラー注入モードを "on" に設定しました。 (adshdb) info status ←9. joberrmode:on ←10. (adshdb) c ←11. KNAX7034-I ジョブ定義スクリプトの実行を継続します。 KNAX6508-I ADSH000005.STEP001 先行のジョブステップまたはコマンドがエラー終了したため,ジョブステップをスキップしました。 KNAX0092-I ADSH000005.STEP002 ステップが開始しました。 KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17 ←12. KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。 17: ./cmd4 現在位置: ./cmd4 (adshdb) joberrmode off KNAX7127-E エラー注入モードの再設定に失敗しました。 ←13. (adshdb) c ←14. KNAX7034-I ジョブ定義スクリプトの実行を継続します。 cmd4 start cmd4 end KNAX6116-I コマンド(./cmd4, 行番号=17)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s KNAX6597-I ADSH000005.STEP002 ジョブステップが正常終了しました。rc=0 E-Time=4.666s C-Time=0.000s KNAX0101-E ADSH000005 ジョブを実行中にエラーが発生しました。 KNAX0098-I ADSH000005 ジョブが終了しました。rc=0 E-Time=15.203s C-Time=0.000s KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/jobuser1/test6/spool/000005-ADSH000005/" (adshdb) quit KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/jobuser1/test6/spool/000004-ADSH000004/" KNAX7999-I ルートジョブのジョブコントローラがバッチジョブを終了しました。rc=0
実行結果の右側に付加した番号に従って解説します。
デバッグを開始する。
スクリプトの途中で停止させる。
エラー時に実行するステップ内で停止させる。
スクリプトを実行する。
最初のブレークポイントで停止する。
ステータスを表示する。
エラー注入モードは無効。
エラー注入モードを有効にする。
ステータスを表示する。
エラー注入モードは有効。
デバッグを再開する。
エラー時に実行するステップ内で停止する。
エラー注入モードの切り替えはできない。
デバッグを再開する。
- 実行結果2
ステップ内で停止し,joberrmodeコマンドでエラー注入モードを有効にした場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。
[jobuser1@HOST01 joberrmode]$ adshexec -d joberrmode.ash ←1. KNAX7901-I ジョブコントローラは,ジョブ終了時にすべての非同期実行プロセスの完了を待ちます。 KNAX0724-I ジョブ識別子を割り当てました。Jobid=000006 (adshdb) b 5 ←2. KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=5 (adshdb) b 17 ←3. KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17 (adshdb) run ←4. KNAX7007-I ジョブ定義スクリプトの実行を開始します。: /home/joberrmode/joberrmode/joberrmode.ash KNAX0724-I ジョブ識別子を割り当てました。Jobid=000007 KNAX0091-I ADSH000007 ジョブが開始しました。 KNAX7902-I ジョブコントローラは,"端末入力モード"で動作します。 KNAX0092-I ADSH000007.STEP001 ステップが開始しました。 KNAX7018-I ブレークポイント "1": ファイル名="joberrmode.ash" 行番号=5 ←5. KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。 5: ./cmd1 現在位置: ./cmd1 (adshdb) info status ←6. joberrmode:off ←7. (adshdb) joberrmode on ←8. KNAX7126-I エラー注入モードを "on" に設定しました。 (adshdb) info status ←9. joberrmode:on ←10. (adshdb) c ←11. KNAX7034-I ジョブ定義スクリプトの実行を継続します。 cmd2 start cmd2 end KNAX6116-I コマンド(./cmd2, 行番号=9)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s KNAX6596-E ADSH000007.STEP001 ジョブステップがエラー終了しました。rc=0 E-Time=13.568s C-Time=0.010s KNAX0092-I ADSH000007.STEP002 ステップが開始しました。 KNAX7018-I ブレークポイント "2": ファイル名="joberrmode.ash" 行番号=17 ←12. KNAX7032-I ジョブ定義スクリプトファイル("joberrmode.ash")の中で実行を停止しました。 17: ./cmd4 現在位置: ./cmd4 (adshdb) joberrmode off KNAX7127-E エラー注入モードの再設定に失敗しました。 ←13. (adshdb) c ←14. KNAX7034-I ジョブ定義スクリプトの実行を継続します。 cmd4 start cmd4 end KNAX6116-I コマンド(./cmd4, 行番号=17)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s KNAX6597-I ADSH000007.STEP002 ジョブステップが正常終了しました。rc=0 E-Time=15.496s C-Time=0.000s KNAX0101-E ADSH000007 ジョブを実行中にエラーが発生しました。 KNAX0098-I ADSH000007 ジョブが終了しました。rc=0 E-Time=29.066s C-Time=0.010s KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/joberrmode/test6/spool/000007-ADSH000007/"
実行結果の右側に付加した番号に従って解説します。
デバッグを開始する。
ステップ内のスクリプトの途中で止める。
エラー時に実行するステップ内で止める。
スクリプトを実行する。
最初のブレークポイントで停止する。
ステータスを表示する。
エラー注入モードは無効。
エラー注入モードを有効にする。
ステータスを表示する。
エラー注入モードは有効。
デバッグを再開する。
エラー時に実行するステップ内で停止する。
エラー注入モードの切り替えはできない。
デバッグを再開する。
- 実行例2
次に示すジョブ定義スクリプトを実行した場合について説明します。左側の行番号は,実行結果に出力される行番号との対応づけのため記載しています。
001 #-adsh_job JOB001 002 #-adsh_step_start STEP001 -onError cont ←STEP001開始 -onError cont指定 003 ./cmd1 ←ステップ正常ブロック部 004 ./cmd2 005 ./cmd3 006 #-adsh_step_error 007 ./cmd4 ←ステップエラーブロック部 008 ./cmd5 009 #-adsh_step_end 010 ./cmd6 ←ステップ外のコマンド
- 実行結果
ステップ内(4行目)で停止し,joberrmodeコマンドを投入して実行した場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。
[jobuser1@HOST01 joberrmode]$ adshexec -d test_cont.ash ←1. KNAX7901-I ジョブコントローラは,ジョブ終了時にすべての非同期実行プロセスの完了を待ちます。 KNAX0724-I ジョブ識別子を割り当てました。Jobid=000008 (adshdb) b 4 ←2. KNAX7018-I ブレークポイント "1": ファイル名="test_cont.ash" 行番号=4 (adshdb) r ←3. KNAX7007-I ジョブ定義スクリプトの実行を開始します。: /home/jobuser1/joberrmode/test_cont.ash KNAX0724-I ジョブ識別子を割り当てました。Jobid=000009 KNAX0091-I JOB001 ジョブが開始しました。 KNAX7902-I ジョブコントローラは,"端末入力モード"で動作します。 KNAX0092-I JOB001.STEP001 ステップが開始しました。 cmd1 start cmd1 end KNAX6116-I コマンド(./cmd1, 行番号=3)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s KNAX7018-I ブレークポイント "1": ファイル名="test_cont.ash" 行番号=4 ←4. KNAX7032-I ジョブ定義スクリプトファイル("test_cont.ash")の中で実行を停止しました。 4: ./cmd2 現在位置: ./cmd2 (adshdb) info status ←5. joberrmode:off ←6. (adshdb) jem on ←7. KNAX7126-I エラー注入モードを "on" に設定しました。 (adshdb) info status ←8. joberrmode:on ←9. (adshdb) c ←10. KNAX7034-I ジョブ定義スクリプトの実行を継続します。 cmd4 start ←11. cmd4 end KNAX6116-I コマンド(./cmd4, 行番号=7)が正常終了しました。rc=0 E-Time=0.002s C-Time=0.000s cmd5 start cmd5 end KNAX6116-I コマンド(./cmd5, 行番号=8)が正常終了しました。rc=0 E-Time=0.001s C-Time=0.000s KNAX6596-E JOB001.STEP001 ジョブステップがエラー終了しました。rc=0 E-Time=34.884s C-Time=0.000s KNAX0101-E JOB001 ジョブを実行中にエラーが発生しました。 KNAX0098-I JOB001 ジョブが終了しました。rc=0 E-Time=34.886s C-Time=0.000s KNAX6380-I ルートジョブのスプールジョブディレクトリにジョブ名を付加します。spool job directory="/home/jobuser1/test6/spool/000009-JOB001/"
実行結果の右側に付加した番号に従って解説します。
デバッグを開始する。
ステップ内のスクリプトの途中で止める。
スクリプトを実行する。
最初のブレークポイントで停止する。
ステータスを表示する。
エラー注入モードは無効。
エラー注入モードを有効にする。
ステータスを表示する。
エラー注入モードは有効。
デバッグを再開する。
ステップエラーブロック部のコマンドを実行する。