Hitachi

JP1 Version 10 JP1/Advanced Shell


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

実行結果の右側に付加した番号に従って解説します。

  1. デバッグを開始する。

  2. スクリプトの途中で停止させる。

  3. エラー時に実行するステップ内で停止させる。

  4. スクリプトを実行する。

  5. 最初のブレークポイントで停止する。

  6. ステータスを表示する。

  7. エラー注入モードは無効。

  8. エラー注入モードを有効にする。

  9. ステータスを表示する。

  10. エラー注入モードは有効。

  11. デバッグを再開する。

  12. エラー時に実行するステップ内で停止する。

  13. エラー注入モードの切り替えはできない。

  14. デバッグを再開する。

実行結果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/"

実行結果の右側に付加した番号に従って解説します。

  1. デバッグを開始する。

  2. ステップ内のスクリプトの途中で止める。

  3. エラー時に実行するステップ内で止める。

  4. スクリプトを実行する。

  5. 最初のブレークポイントで停止する。

  6. ステータスを表示する。

  7. エラー注入モードは無効。

  8. エラー注入モードを有効にする。

  9. ステータスを表示する。

  10. エラー注入モードは有効。

  11. デバッグを再開する。

  12. エラー時に実行するステップ内で停止する。

  13. エラー注入モードの切り替えはできない。

  14. デバッグを再開する。

実行例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/"

実行結果の右側に付加した番号に従って解説します。

  1. デバッグを開始する。

  2. ステップ内のスクリプトの途中で止める。

  3. スクリプトを実行する。

  4. 最初のブレークポイントで停止する。

  5. ステータスを表示する。

  6. エラー注入モードは無効。

  7. エラー注入モードを有効にする。

  8. ステータスを表示する。

  9. エラー注入モードは有効。

  10. デバッグを再開する。

  11. ステップエラーブロック部のコマンドを実行する。