6.2.20 エラー注入モードの有効/無効を設定する(joberrmodeコマンド)
デバッグ中のジョブ定義スクリプトのエラー注入モードを有効または無効にするには,joberrmodeコマンドを実行します。joberrmodeコマンドの短縮形は"jem"です。joberrmodeコマンドの形式を次に示します。
joberrmode {on|off}
- onを選択した場合
-
エラー注入モードを有効にします。これによって,ジョブ内でエラーが発生した場合のケースをテストできます。すべての実行パスを実行してもC1実行比率が100%とならない場合に,エラーをシミュレートするために使用します。C1実行比率が100%とならないケースについては,「3.10.4(5) C1実行比率100%とならないケース」を参照してください。
エラー注入モードが有効な場合は次のように動作します。このとき,終了コードは変更しません。
-
run属性にabnormalまたはalwaysが指定されている場合,ジョブステップを実行する。
-
run属性が省略されているまたはnormalが指定されている場合,ジョブステップを実行しない。
-
ジョブステップ外のコマンドは実行しない。
-
ステップ正常ブロック内でエラー注入した場合,そのステップのステップエラーブロック内のコマンドは実行する。onError属性にcontが指定されていても,そのステップ内の後続のコマンドは実行しないで,ステップエラーブロックを実行する。
エラー注入モードがonの場合にrunコマンドを実行すると,エラー注入モードはoffに戻ります。
-
- 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 adshexec waits for all asynchronous processes at the end of the job. KNAX0724-I Jobid was assigned. Jobid=000240 (adshdb) b 2 ←2. KNAX7015-W Breakpoint cannot be set at line "2". Setting breakpoint at next available line. KNAX7018-I Breakpoint "1": filename="joberrmode.ash" line=3 (adshdb) b 17 ←3. KNAX7018-I Breakpoint "2": filename="joberrmode.ash" line=17 (adshdb) run ←4. KNAX7007-I Starting the script: /home/jobuser1/joberrmode/joberrmode.ash KNAX0724-I Jobid was assigned. Jobid=000241 KNAX0091-I ADSH000241 Job started. KNAX7902-I adshexec will run in tty stdin mode. KNAX7018-I Breakpoint "1": filename="joberrmode.ash" line=3 ←5. KNAX7032-I Stop in the script "joberrmode.ash". 3: #-adsh_step_start STEP001 Current: #-adsh_step_start STEP001 (adshdb) info status ←6. joberrmode:off ←7. (adshdb) joberrmode on ←8. KNAX7126-I Error insertion mode is set to "on". (adshdb) info status ←9. joberrmode:on ←10. (adshdb) c ←11. KNAX7034-I Continuing the script. KNAX6508-I ADSH000241.STEP001 Step was skipped because previous step or command ended abnormally. KNAX0092-I ADSH000241.STEP002 Step started. KNAX7018-I Breakpoint "2": filename="joberrmode.ash" line=17 ←12. KNAX7032-I Stop in the script "joberrmode.ash". 17: ./cmd4 Current: ./cmd4 (adshdb) joberrmode off KNAX7127-E Error insertion mode could not be modified. ←13. (adshdb) c ←14. KNAX7034-I Continuing the script. cmd4 start cmd4 end KNAX6116-I Command ./cmd4(line=17) succeeded. rc=0 E-Time=0.071s C-Time=0.000s KNAX6597-I ADSH000241.STEP002 Step succeeded. rc=0 E-Time=14.872s C-Time=0.000s KNAX0101-E ADSH000241 An error occurred during execution of job. KNAX0098-I ADSH000241 Job ended. rc=0 E-Time=46.512s C-Time=0.000s KNAX6380-I Job name will be added to spool job directory. spool job directory="/home/jobuser1/test6/spool/000241-ADSH000241/" (adshdb) quit KNAX6380-I Job name will be added to spool job directory. spool job directory="/home/jobuser1/test6/spool/000240-ADSH000240/" KNAX7999-I JP1/Advanced Shell ended. rc=0
実行結果の右側に付加した番号に従って解説します。
-
デバッグを開始する。
-
スクリプトの途中で停止させる。
-
エラー時に実行するステップ内で停止させる。
-
スクリプトを実行する。
-
最初のブレークポイントで停止する。
-
ステータスを表示する。
-
エラー注入モードは無効。
-
エラー注入モードを有効にする。
-
ステータスを表示する。
-
エラー注入モードは有効。
-
デバッグを再開する。
-
エラー時に実行するステップ内で停止する。
-
エラー注入モードの切り替えはできない。
-
デバッグを再開する。
-
- 実行結果2
-
ステップ内で停止し,joberrmodeコマンドでエラー注入モードを有効にした場合の例を示します。行の右側に付加した番号に対する説明は,実行結果の下を参照してください。
[jobuser1@HOST01 joberrmode]$ adshexec -d joberrmode.ash ←1. KNAX7901-I adshexec waits for all asynchronous processes at the end of the job. KNAX0724-I Jobid was assigned. Jobid=000242 (adshdb) b 5 ←2. KNAX7018-I Breakpoint "1": filename="joberrmode.ash" line=5 (adshdb) b 17 ←3. KNAX7018-I Breakpoint "2": filename="joberrmode.ash" line=17 (adshdb) run ←4. KNAX7007-I Starting the script: /home/jobuser1/joberrmode/joberrmode.ash KNAX0724-I Jobid was assigned. Jobid=000243 KNAX0091-I ADSH000243 Job started. KNAX7902-I adshexec will run in tty stdin mode. KNAX0092-I ADSH000243.STEP001 Step started. KNAX7018-I Breakpoint "1": filename="joberrmode.ash" line=5 ←5. KNAX7032-I Stop in the script "joberrmode.ash". 5: ./cmd1 Current: ./cmd1 (adshdb) info status ←6. joberrmode:off ←7. (adshdb) joberrmode on ←8. KNAX7126-I Error insertion mode is set to "on". (adshdb) info status ←9. joberrmode:on ←10. (adshdb) c ←11. KNAX7034-I Continuing the script. cmd2 start cmd2 end KNAX6116-I Command ./cmd2(line=9) succeeded. rc=0 E-Time=0.090s C-Time=0.000s KNAX6596-E ADSH000243.STEP001 Step failed. rc=0 E-Time=24.355s C-Time=0.000s KNAX0092-I ADSH000243.STEP002 Step started. KNAX7018-I Breakpoint "2": filename="joberrmode.ash" line=17 ←12. KNAX7032-I Stop in the script "joberrmode.ash". 17: ./cmd4 Current: ./cmd4 (adshdb) joberrmode off KNAX7127-E Error insertion mode could not be modified. ←13. (adshdb) c ←14. KNAX7034-I Continuing the script. cmd4 start cmd4 end KNAX6116-I Command ./cmd4(line=17) succeeded. rc=0 E-Time=0.001s C-Time=0.000s KNAX6597-I ADSH000243.STEP002 Step succeeded. rc=0 E-Time=18.751s C-Time=0.000s KNAX0101-E ADSH000243 An error occurred during execution of job. KNAX0098-I ADSH000243 Job ended. rc=0 E-Time=43.107s C-Time=0.000s KNAX6380-I Job name will be added to spool job directory. spool job directory="/home/jobuser1/test6/spool/000243-ADSH000243/"
実行結果の右側に付加した番号に従って解説します。
-
デバッグを開始する。
-
ステップ内のスクリプトの途中で止める。
-
エラー時に実行するステップ内で止める。
-
スクリプトを実行する。
-
最初のブレークポイントで停止する。
-
ステータスを表示する。
-
エラー注入モードは無効。
-
エラー注入モードを有効にする。
-
ステータスを表示する。
-
エラー注入モードは有効。
-
デバッグを再開する。
-
エラー時に実行するステップ内で停止する。
-
エラー注入モードの切り替えはできない。
-
デバッグを再開する。
-
- 実行例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 adshexec waits for all asynchronous processes at the end of the job. KNAX0724-I Jobid was assigned. Jobid=000264 (adshdb) b 4 ←2. KNAX7018-I Breakpoint "1": filename="test_cont.ash" line=4 (adshdb) r ←3. KNAX7007-I Starting the script: /home/jobuser1/joberrmode/test_cont.ash KNAX0724-I Jobid was assigned. Jobid=000265 KNAX0091-I JOB001 Job started. KNAX7902-I adshexec will run in tty stdin mode. KNAX0092-I JOB001.STEP001 Step started. cmd1 start cmd1 end KNAX6116-I Command ./cmd1(line=3) succeeded. rc=0 E-Time=0.004s C-Time=0.000s KNAX7018-I Breakpoint "1": filename="test_cont.ash" line=4 ←4. KNAX7032-I Stop in the script "test_cont.ash". 4: ./cmd2 Current: ./cmd2 (adshdb) info status ←5. joberrmode:off ←6. (adshdb) jem on ←7. KNAX7126-I Error insertion mode is set to "on". (adshdb) info status ←8. joberrmode:on ←9. (adshdb) c ←10. KNAX7034-I Continuing the script. cmd4 start ←11. cmd4 end KNAX6116-I Command ./cmd4(line=7) succeeded. rc=0 E-Time=0.003s C-Time=0.000s cmd5 start cmd5 end KNAX6116-I Command ./cmd5(line=8) succeeded. rc=0 E-Time=0.003s C-Time=0.000s KNAX6596-E JOB001.STEP001 Step failed. rc=0 E-Time=24.951s C-Time=0.000s KNAX0101-E JOB001 An error occurred during execution of job. KNAX0098-I JOB001 Job ended. rc=0 E-Time=24.953s C-Time=0.000s KNAX6380-I Job name will be added to spool job directory. spool job directory="/home/jobuser1/test6/spool/000265-JOB001/"
実行結果の右側に付加した番号に従って解説します。
-
デバッグを開始する。
-
ステップ内のスクリプトの途中で止める。
-
スクリプトを実行する。
-
最初のブレークポイントで停止する。
-
ステータスを表示する。
-
エラー注入モードは無効。
-
エラー注入モードを有効にする。
-
ステータスを表示する。
-
エラー注入モードは有効。
-
デバッグを再開する。
-
ステップエラーブロック部のコマンドを実行する。
-