5.8.11 コマンド実行結果の出力に関する注意事項
ジョブ実行ログファイルに出力されたコマンドの実行結果を確認するときは,次の点に注意してください。
- 〈この項の構成〉
(1) 別プロセスでコマンドグループ化した場合のコマンド実行結果の出力
「(」,「)」で囲んだコマンドグループ化によって実行したコマンド群は,コマンド群を1つのジョブ定義スクリプトとして別プロセスで動作します。この場合のコマンド実行結果は,1つのジョブ定義スクリプトの実行結果として,次のどれかのメッセージが出力されます。
KNAX6540-I,KNAX6541-E,KNAX6542-E,KNAX6560-I,KNAX6561-E,KNAX6562-E
(2) バックグラウンド実行時の注意事項
「&」および「|&」を付与してバックグラウンド実行したコマンドの終了メッセージ出力の場合,次の点に注意してください。
-
バックグラウンド実行のコマンドがすべて完了するのを待ってからジョブ終了するため,終了メッセージを必ず出力します。
-
ジョブステップ内で起動したコマンドでも,コマンドの終了はジョブステップ終了後の可能性があります。その場合は,コマンドを起動したジョブステップの終了メッセージ出力後に,コマンドの終了メッセージを出力します。なお,「&」および「|&」を付与してバックグラウンド実行したコマンドの終了コードはジョブステップやジョブの終了コードには影響しません。
-
バックグラウンド実行したコマンドのジョブ実行ログへの出力順序は,実際のプロセス開始順序や終了順序とは関係なく,順不同となります。「|」を使って連結したコマンド群についても同様です。
(3) builtinコマンド,commandコマンド,evalコマンド,timeコマンド,.(ドット)コマンド,execコマンドの注意事項
それぞれのコマンドを実行したときの,実行結果の出力についての注意事項を次に示します。
-
組み込みコマンドのbuiltinコマンド,commandコマンド,evalコマンド,timeコマンド,execコマンドの場合
引数として指定したコマンドの実行結果だけを出力します。builtinコマンド,commandコマンド,evalコマンド,timeコマンド,およびexecコマンド自身の実行結果は出力しません。また,ジョブやジョブステップの正常終了またはエラー終了の判定にも使用しません。
commandコマンドに対して,実行中のプラットフォームではサポートしないオプションを指定した場合は,commandコマンドの実行結果を出力してジョブやジョブステップの正常終了またはエラー終了を判定します。
-
組み込みコマンドの.(ドット)コマンドの場合
指定した外部スクリプト内の各コマンドの実行結果だけを出力します。
.(ドット)コマンド自身は正常終了しますが,その実行結果は出力しません。また,ジョブやジョブステップの正常終了またはエラー終了の判定にも使用しません。
指定した外部スクリプトがなく,.(ドット)コマンドがエラー終了した場合は,.(ドット)コマンドの実行結果を出力してジョブやジョブステップの正常終了またはエラー終了を判定します。
(4) コマンドの書式によるコマンド実行結果出力の違い
コマンドを次の書式で指定して実行した場合,変換前のコマンド名がコマンドの実行結果に出力されます。
-
パイプ(|)による別プロセスの実行
-
コマンド置換($(),``)による別プロセスの実行
-
|&によるバックグラウンドプロセスの実行
-
単一コマンドのグループ化によるサブシェル実行
-
&によるバックグラウンド実行
例を次に示します。
-
変数をコマンドとして実行した場合は,変数展開前の文字列がコマンド名として出力されます。
ジョブ定義スクリプトの定義
01: $CMD &
実行結果の出力
KNAX6116-I Command $CMD(line=1) succeeded. rc=0 E-Time=0.000s C-Time=0.000s
-
環境ファイルのCHILDJOB_PGMパラメーターに定義した規則に一致する文字列をコマンドとして実行した場合は,CHILDJOB_PGMパラメーターによって読み替えられる前の文字列がコマンド名として出力されます。
環境ファイルの定義
#-adsh_conf CHILDJOB_PGM /bin/sh
ジョブ定義スクリプトの定義
01: /bin/sh ./test.ash &
実行結果の出力
KNAX6116-I Command /bin/sh(line=1) succeeded. rc=0 E-Time=0.000s C-Time=0.000s