7.11.1 標準出力ファイル・標準エラー出力ファイルの注意事項
標準出力ファイルおよび標準エラー出力ファイルについての注意事項を次に示します。
- 〈この項の構成〉
(1) 標準出力ファイル・標準エラー出力ファイルを定義する場合
ジョブ(キューレスジョブを含むPCジョブ,UNIXジョブ,フレキシブルジョブ,およびHTTP接続ジョブ)の実行時に出力する標準出力ファイル・標準エラー出力ファイルを定義する場合,次の注意事項があります。
-
ジョブネットから実行するジョブはデフォルトで標準エラー出力をジョブの実行結果として取得します。標準出力はジョブの実行結果として取得されません。標準エラー出力の内容は,[JP1/AJS3 - View]ウィンドウの[実行結果詳細]ダイアログボックスで表示できます。なお,[JP1/AJS3 - View]ウィンドウの[実行結果詳細]ダイアログボックスには,JP1/AJS3が標準エラー出力に出力するエラーメッセージも表示されます。
-
標準出力・標準エラー出力の内容を任意のファイルに出力したい場合は,ジョブを定義する際に標準出力ファイル名・標準エラー出力ファイル名を指定してください。
-
[JP1/AJS3 - View]ウィンドウの[実行結果詳細]ダイアログボックスに標準出力の内容も表示する場合は,[標準出力ファイル名]と[標準エラー出力ファイル名]に同じファイル名を指定してください。
-
[標準出力ファイル名]および[標準エラー出力ファイル名]に同じファイル名を指定する場合は,追加書きオプションの設定を一致させてください。一方に新規作成,もう一方に追加書きを設定すると,パラメーターエラーになり,ジョブが起動失敗します。
-
[詳細定義−[アイコン名]]ダイアログボックスの[環境変数ファイル名],[標準入力ファイル名],[標準出力ファイル名],および[標準エラー出力ファイル名]に,[スクリプトファイル名]または[実行ファイル名]と同じファイル名を指定している場合,ジョブが起動失敗または異常検出終了となるおそれがあります。これらの項目には,[スクリプトファイル名]または[実行ファイル名]と同じファイル名を指定しないでください。
-
同時に実行する複数のジョブの定義に,同じ標準出力ファイルや標準エラー出力ファイルを指定してジョブを実行すると,標準出力や標準エラー出力の出力結果が上書きされます。また,標準出力や標準エラー出力を指定したジョブを多重起動して同時に実行した場合も,標準出力や標準エラー出力の出力結果が上書きされます。
同時に実行するジョブの[標準出力ファイル名],[標準エラー出力ファイル名]には,それぞれ別のファイルを指定してください。
-
ジョブの[標準出力ファイル名]または[標準エラー出力ファイル名]に,アクセスできないネットワークファイル名を指定した場合,ジョブが起動失敗または異常検出終了します。正しいネットワークファイル名を指定してください。
-
[標準出力ファイル名]または[標準エラー出力ファイル名]にネットワークファイル名を指定している場合,指定したファイルには,次に示す権限が必要です。
- Windowsの場合
-
実行ホストのJP1/AJS3サービス(キューレスジョブの場合はJP1/AJS3 Queueless Agentサービス)に設定されているアカウントで作成,参照および更新する権限
- UNIXの場合
-
ジョブの実行OSユーザーに指定されているアカウントで作成,参照および更新する権限
-
[標準出力ファイル名]を指定した場合,指定しなかった場合に比べてジョブネットの処理性能に影響することがあります。
- 補足事項
-
jpqjobsubコマンドから実行するサブミットジョブの場合はデフォルトでは標準出力・標準エラー出力を保存しません。jpqjobsubコマンドのオプションに任意のファイル名を指定してください。
(2) 標準出力ファイル・標準エラー出力ファイルに大量データを出力する場合
JP1/AJS3では,ジョブ(キューレスジョブを除く標準ジョブ,アクションジョブ,またはカスタムジョブ)の終了時にエージェントホストからマネージャーホストに標準出力ファイルまたは標準エラー出力ファイルを転送しています。標準出力ファイルまたは標準エラー出力ファイルに数メガバイトを超えるような大量データを出力するジョブを実行すると,ファイルのデータ解析処理またはファイルのデータ転送で負荷が掛かり,CPU使用率の増加やJP1/AJS3が使用するメモリー使用量の増加など,ジョブの実行が遅延するだけでなく,システム全体の処理に影響を与えるおそれがあります。これらの問題は,マネージャーホストとエージェントホストの両方で発生します。
また,追加書きオプションを設定すると,ジョブ実行のたびに出力データが蓄積され,転送するファイルのサイズが単調増加します。この場合も,ファイルのデータ解析処理またはファイルのデータ転送で負荷が掛かり,ジョブが異常終了したり,エージェントホストからマネージャーホストに対するデータ転送が遅延したりすることがあります。この場合,追加書きオプションの設定を無効にするか,または標準出力データファイルや標準エラー出力データファイルを定期的に削除,退避するようにしてください。
標準出力ファイルや標準エラー出力ファイルのファイルサイズが原因となって発生する問題を回避する方法として,JP1/AJS3では標準出力ファイルや標準エラー出力ファイルのファイルサイズに上限値を設定できます。この設定を行うことで,マネージャーホストでファイルサイズの上限値を超えたデータの破棄や,上限値に達したことを示す警告メッセージを出力できます。これによって,一部のジョブの処理でJP1/AJS3のジョブ実行全体に影響が出ないようにすることができます。設定方法の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.7 ファイル受信制限をするための設定」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.7 ファイル受信制限をするための設定」(UNIXの場合)を参照してください。
また,エージェントホストの設定を行うことで同様にファイルサイズの上限値を超えたデータの破棄や,上限値に達したことを示す警告メッセージを出力できます。これによって,一部のジョブの処理でJP1/AJS3のジョブ実行全体に影響が出ないようにすることができます。設定方法の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.27 ファイル送信制限をするための設定」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.24 ファイル送信制限をするための設定」(UNIXの場合)を参照してください。
上記のように,標準出力ファイルや標準エラー出力ファイルのファイルサイズに上限値を設定していない状態で,ジョブが正常に動作しない場合は,次に示す点に注意して確認した上,それぞれの対処方法で対応してください。
-
標準出力データが大量に出力される
PCジョブやUNIXジョブの場合,ジョブの定義で[標準出力ファイル名]を明示的に指定している場合にだけファイルの転送を行っており,標準出力データを大量に出力するとジョブが異常終了することがあります。この場合,ジョブの定義の[標準出力ファイル名]には何も指定しないでください。ジョブのバッチファイルやシェルスクリプト内で,標準出力をリダイレクトしてください。
ジョブの定義の[標準出力ファイル名]に何も指定しなければ,標準出力ファイルはマネージャーホストに転送されません。
-
標準エラー出力データが大量に出力される
PCジョブやUNIXジョブの場合,ジョブ定義の[標準エラー出力ファイル名]にNULLデバイスを指定してください。UNIX上で実行するジョブの場合は"/dev/null"を記述し,Windows上で実行するジョブの場合は"NUL"を記述してください。ジョブ定義の[標準エラー出力ファイル名]にファイル名を明示的に指定している場合は,バッチファイルやシェルスクリプト内で標準エラー出力をリダイレクトしてください。
この設定をすると,標準エラー出力ファイルはマネージャーホストに転送されません。その場合は,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスで標準エラー出力ファイルの内容を参照できなくなります。
- 補足事項
-
-
この現象が発生すると,エージェントホストのジョブ実行環境のワークディレクトリに「A_JPQ*_ジョブ番号」という一時ファイルが残ることがあります。エージェントホストのジョブ実行環境のワークディレクトリは,[{JP1_DEFAULT|論理ホスト名}\JP1NBQAGENT\Process]の環境設定パラメーターWorkPathに指定したフォルダです。環境設定パラメーターWorkPathのデフォルト値などの詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 20.5.2(37) WorkPath(エージェントプロセス用)」を参照してください。
なお,異常検出終了したジョブと同じジョブ番号の一時ファイルは削除しても問題ありません。
-
サブミットジョブで標準出力データ,または標準エラー出力データを大量に出力する場合,マネージャーホストのジョブ実行環境のワークディレクトリに作成される一時ファイル(M_JPQSTDE_ジョブ番号,またはM_JPQSTDO_ジョブ番号)のデータも大量になります。通常は,ジョブ情報削除処理実行時に保存日数を経過しているジョブの一時ファイルは,自動的に削除されます。しかし,一時ファイルによるディスク容量不足などが発生した場合には,ジョブの終了後に手動で削除できます。また,ディスク容量不足が慢性的に発生する場合には,ジョブ情報保存日数の縮小や,ジョブのスクリプトファイル内で標準出力・標準エラー出力のリダイレクトを検討してください。
一時ファイルを削除した場合には,jpqjobgetコマンドを使用して標準出力・標準エラー出力ファイルを参照できなくなります。マネージャーホストのジョブ実行環境のワークディレクトリは,[{JP1_DEFAULT|論理ホスト名}\JP1NBQMANAGER\Process]の環境設定パラメーターWorkPathに設定したフォルダです。環境設定パラメーターWorkPathのデフォルト値などの詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 20.5.2(1) WorkPath(マネージャープロセス用)」を参照してください。
-
ジョブの詳細定義の[パラメーター]にリダイレクトを指定する方法とその例を,次に示します。
定義内容 |
指定方法 |
指定例 |
---|---|---|
標準出力ファイル,標準エラー出力ファイルが異なる場合(実行ファイルがexeの場合) |
実行ファイル名:test.exe パラメーター:なし 標準出力ファイル:out.txt 標準エラー出力ファイル:err.txt |
実行ファイル名:cmd.exe パラメーター: /C test.exe >out.txt 2>err.txt 標準出力ファイル:なし 標準エラー出力ファイル:なし |
標準出力ファイル,標準エラー出力ファイルが異なる場合(実行ファイルがbatの場合) |
実行ファイル名:test.bat パラメーター:なし 標準出力ファイル:out.txt 標準エラー出力ファイル:err.txt |
実行ファイル名:test.bat パラメーター:>out.txt 2>err.txt 標準出力ファイル:なし 標準エラー出力ファイル:なし |
標準出力ファイル,標準エラー出力ファイルが同名の場合 |
実行ファイル名:test.bat パラメーター:なし 標準出力ファイル:out.txt 標準エラー出力ファイル:out.txt |
実行ファイル名:test.bat パラメーター:>out.txt 2>&1 標準出力ファイル:なし 標準エラー出力ファイル:なし |
定義内容 |
指定方法 |
指定例 |
---|---|---|
標準出力ファイル,標準エラー出力ファイルが異なる場合 |
スクリプトファイル名:test.sh パラメーター:なし 標準出力ファイル:out.txt 標準エラー出力ファイル:err.txt |
スクリプトファイル名:test.sh パラメーター:>out.txt 2>err.txt 標準出力ファイル:なし 標準エラー出力ファイル:なし |
標準出力ファイル,標準エラー出力ファイルが同名の場合 |
スクリプトファイル名:test.sh パラメーター:なし 標準出力ファイル:out.txt 標準エラー出力ファイル:out.txt |
スクリプトファイル名:test.sh パラメーター:>out.txt 2>&1 標準出力ファイル:なし 標準エラー出力ファイル:なし |
(3) 標準出力ファイル・標準エラー出力ファイルのファイル受信制限機能とファイル送信制限機能について
標準出力ファイルまたは標準エラー出力ファイルに数メガバイトを超えるような大量データを出力するジョブを実行すると,ファイルのデータ解析処理またはファイルのデータ転送で負荷が掛かり,CPU使用率の増加やJP1/AJS3が使用するメモリー使用量の増加など,ジョブの実行が遅延するだけでなく,システム全体の処理に影響を与えるおそれがあります。そのためJP1/AJS3 11-00以降では,デフォルトの機能としてマネージャーホストでファイル受信制限を行い,エージェントホストでファイル送信制限を行います。
ファイル受信制限機能とファイル送信制限機能は,ファイルサイズ上限を超えたデータの破棄と,上限値に達したことを示すメッセージの出力を行います。マネージャーのファイル受信制限のサイズは5メガバイト(5,242,880バイト),エージェントのファイル送信制限のサイズは3メガバイト(3,145,728バイト)です。
ファイルサイズ上限を超えた時の動作とファイルサイズ上限値については変更できます。設定方法の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.7 ファイル受信制限をするための設定」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.7 ファイル受信制限をするための設定」(UNIXの場合)を参照してください。また,エージェントのファイルサイズ上限を超えた時の動作とファイルサイズ上限値についても変更できます。設定方法の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.27 ファイル送信制限をするための設定」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.24 ファイル送信制限をするための設定」(UNIXの場合)を参照してください。
- 補足事項
-
マネージャーホストのJP1/AJS3をバージョンアップインストールした場合,ファイル受信制限機能はバージョンアップ前の環境設定パラメーターの値を引き継ぎます。エージェントホストのJP1/AJS3をバージョンアップインストールした場合,ファイル送信機能はファイルサイズ上限を超えたデータを破棄せず,上限値に達したことを示すメッセージを出力します。
(4) その他の注意事項
-
標準出力データや標準エラー出力データの出力先に指定できるファイルは,テキスト形式のファイルだけです。
-
標準出力データや標準エラー出力データには,外字・機種依存文字を使用しないでください。これらの文字を使用した場合,JP1/AJS3 - Viewでは正しく表示できません。
-
標準出力データ・標準エラー出力データは,エージェントホスト上に一時的にファイルとして作成され,ジョブ終了時にマネージャーホストに転送されます。これらの一時ファイルはマネージャーホスト,エージェントホストのジョブ実行環境のワークディレクトリに,それぞれ次に示す名前で作成されます。
- マネージャーホスト(サブミットジョブを実行した場合)
-
M_JPQSTDE_ジョブ番号
M_JPQSTDO_ジョブ番号
- エージェントホスト
-
A_JPQSTDE_*_ジョブ番号
A_JPQSTDO_*_ジョブ番号
それぞれのホストで削除されるタイミングは,次のとおりです。
- マネージャーホスト
-
QUEUEジョブ・サブミットジョブについての一時ファイルはジョブ情報削除処理の実行時に削除され,それ以外のジョブの一時ファイルはジョブ終了時に削除されます。
- エージェントホスト
-
一時ファイルはジョブ終了時に自動的に削除されます。
なお,キューレスジョブの場合は,標準エラー出力データだけが一時的にファイルとしてエージェントホスト上に保存されます。このファイルの内容は,キューレスジョブ終了時にマネージャーホストへ転送されます。このファイルは,キューレスジョブ終了時,またはキューレスエージェントサービス起動時に自動的に削除されます。
フレキシブルジョブで実行したユーザープログラムの標準出力データ,および標準エラー出力データは常にマネージャーホストに転送されます。転送されたファイルのファイル名は,ajsshowコマンドの-iオプションに「%so」を指定して実行することで確認できます。
-
[標準エラー出力ファイル名]を指定し,[追加書き]を選択しているジョブの実行後にJP1/AJS3 - Viewで[実行結果詳細]ダイアログボックスの内容を表示した場合,ジョブの実行先サービスによって次の違いがあります。
-
[実行先サービス]に[標準]を指定したジョブの場合
[標準エラー出力ファイル名]に指定したファイルの内容が表示されます。
-
[実行先サービス]に[キューレス]を指定したジョブの場合
ジョブ実行時に標準エラー出力に出力された内容が表示されます。
-