JP1/Automatic Job Management System 2 設計・運用ガイド
ファイル監視ジョブの注意事項(使用する前に知っておいた方がよいこと)について説明します。
ファイル監視ジョブを使った例を次に示します。
- ファイルの書き込み時間を監視して,ファイルが変更されたときに後続ジョブを実行する。
- アプリケーションが出力するファイル,またはほかのホストから転送されてくるファイルを監視して,ファイルの作成が完了したあとに後続ジョブを実行する。
ファイル監視ジョブで監視する事象,ファイル名の指定方法,およびファイル監視ジョブのオプションを次に説明します。
- <この項の構成>
- (1) ファイル監視ジョブで監視する事象
- (2) ファイル名の指定方法
- (3) ファイル監視ジョブのオプション
- (4) ファイル監視ジョブ定義時の注意事項
監視する事象を次に示します。
監視する事象 監視内容 作成※1,※4 指定した名称のファイルが作成されたかを監視します。 削除※2 指定した名称のファイルが削除されたかを監視します。 サイズ変更※3,※4 指定した名称のファイルサイズが変更されたかを監視します。 最終書き込み時刻変更※3,※4 指定した名称のファイルが更新されたかを監視します。更新した時刻を監視し,更新時刻が変わったら条件成立とします。
- 注※1
- 監視開始の時点で,指定した名称のファイルがすでにあった場合には,そのファイルが削除され,再度作成されたときに条件が成立します。
- なお,監視開始の時点で,指定した名称のファイルがすでにあった場合に条件を成立させるかどうかを,監視開始オプションで指定することもできます。監視開始オプションの詳細については,「(3) ファイル監視ジョブのオプション」を参照してください。
- 注※2
- 監視開始の時点で,指定した名称のファイルがなかった場合には,そのファイルが作成されて,削除されたときに条件が成立します。
- 注※3
- 監視開始の時点で,指定した名称のファイルがなかった場合には,そのファイルが作成されて,サイズ変更または最終書き込み時刻が変更されたときに条件が成立します。ファイルが作成されただけでは条件は成立しません。
- 注※4
- 監視条件に合致した場合,監視対象のファイルにファイル監視ジョブ以外のプロセスがアクセスしていないかチェックします(クローズチェック)。
- 監視条件に合致しても,ファイル監視ジョブ以外のプロセスが監視対象のファイルにアクセスしていた場合は条件成立となりません。この場合,次回の監視間隔に繰り越して監視し,そこでファイル監視ジョブ以外のプロセスのアクセスがなければ条件成立となります。このクローズチェックをすることで,ファイルコピー中など転送中(ファイルコピー中など)の監視対象のファイルを条件成立とすることを防ぐことができます。
これらの条件は,複数指定することもできます。例えば,ファイルが削除または更新されたら後続ジョブを実行するように定義する場合は,「削除」と「最終書き込み時刻変更」を指定します。ただし,「サイズ変更」と「最終書き込み時刻変更」は同時に指定できません。
ファイル監視ジョブの基本動作を次の図に示します。
図8-5 監視条件で「作成」を指定して監視している場合(ジョブネット中のファイル監視ジョブ)
図8-6 監視条件で「削除」「サイズ変更」「最終書き込み時刻変更」のどれかを指定して監視している場合(ジョブネット中のファイル監視ジョブ)
図8-7 監視間隔内に複数回ファイルが更新された場合(監視条件:「作成」だけを指定している場合)
ファイル名の指定方法には,絶対パス名でファイル名を指定する方法のほかに,絶対パス名と「*(ワイルドカード)」を使用した総称名で指定する方法があります。ワイルドカードを使った監視ファイル名の指定例を次に示します。
表8-15 ワイルドカードを使った監視ファイル名の指定例
指定例 指定内容 監視ファイル名の例 /jp1/* /jp1にあるファイルすべてを監視します。ただし,先頭が「.」(ピリオド)で始まるファイルは監視しません。 /jp1/aaa
/jp1/aaa.sh/jp1/.* /jp1にあるファイルで,「.」(ピリオド)で始まるファイルすべてを監視します。 /jp1/.aaa /jp1/aaa* /jp1にあるファイルで,「aaa」という文字列で始まるファイルすべてを監視します。 /jp1/aaa
/jp1/aaabbb
/jp1/aaa.sh/jp1/*aaa /jp1にあるファイルで,「aaa」という文字列が最後に付くファイルすべてを監視します。 /jp1/aaa
/jp1/bbbaaa
/jp1/bbb.aaa/jp1/aaa*bbb /jp1にあるファイルで,「aaa」という文字列で始まり,「bbb」という文字列が最後に付くファイルすべてを監視します。 /jp1/aaabbb
/jp1/aaacccbbb
/jp1/aaa.bbb/jp1/*aaa* /jp1にあるファイルで,「aaa」という文字列がファイル名に含まれているファイルすべてを監視します。 /jp1/aaa
/jp1/bbbaaa
/jp1/bbbaaaccc
/jp1/bbbaaa.sh
- 注
- このファイル名の指定例は,すべてUNIXの場合の例です。Windowsでファイル名を指定する場合は,「c:\jp1\*」のようになります。なお,次の場合は,実行時にエラーとなります。
- ディレクトリ名にワイルドカードを指定した場合
- 相対パスで指定した場合
- 指定したファイル名が,ディレクトリとしてすでにある場合(例えば,「/jp1/aaa」というファイル名を指定したときに,すでに「/jp1/aaa」というディレクトリがある場合)
ファイル監視ジョブには,次の二つのオプションを設定できます。
- 監視開始オプション
- ファイル監視ジョブの状態引き継ぎオプション
上記のオプションについて,次に説明します。
ファイル監視ジョブが実行中の状態になったときに,すでに監視対象ファイルが存在する場合,ファイル監視ジョブの監視条件を成立させるかどうかをオプションで指定します。このオプションを,「監視開始オプション」と呼びます。
なお,監視開始オプションは,ファイルの監視条件で「作成」を選択した場合に有効になります。また,オプションを指定しない場合は,ファイルが存在していても,監視条件を成立させません。
監視開始オプションを設定した場合のオプションの基本動作例を紹介します。まず,監視開始オプションを設定していない場合の動作例を次の図に示します。
図8-8 監視開始オプションを設定していない場合の動作例
監視開始オプションを設定している場合の動作例を次の図に示します。
図8-9 監視開始オプションを設定している場合の動作例
監視開始オプションの指定内容によって,ファイル監視ジョブがどのように動作するかを,次に説明します。
- 「既存ファイルも条件成立」を指定した場合
- ファイルの新規作成を監視しているファイル監視ジョブが実行中の状態になったときに,監視対象ファイルがすでに存在していると,監視条件が成立し,ファイル監視ジョブが正常終了します。
- ただし,監視対象ファイルのクローズチェックが実行されるため,監視対象ファイルが使用中の場合,ファイル監視ジョブは監視中のままになります。
- なお,ジョブの種類によって,監視開始オプションで監視条件を成立させるファイル監視ジョブが異なります。監視開始オプションの動作を,ファイル監視ジョブの種類ごとに示します。
- 監視対象ファイル名が指定されている,ジョブネット中のファイル監視ジョブ
ファイル監視ジョブの実行時に,監視対象ファイルが存在している場合,監視開始オプションによって監視条件が成立し,即時にイベントが発生してファイル監視ジョブは正常終了します。
図8-10 監視対象ファイル名が指定されているジョブネット中のファイル監視ジョブ
- 監視対象ファイル名が「*(ワイルドカード)」で指定されている,ジョブネット中のファイル監視ジョブ
ファイル監視ジョブの実行時に監視対象のディレクトリに一つでもファイルが存在している場合は,監視開始オプションによって監視条件が成立し,即時にイベントが発生してファイル監視ジョブは正常終了します。
図8-11 監視対象ファイル名に「*(ワイルドカード)」が指定されているジョブネット中のファイル監視ジョブ
補足事項
「*(ワイルドカード)」の使用については,「(2) ファイル名の指定方法」を参照してください。
- 監視対象ファイル名が指定されている,起動条件中のファイル監視ジョブ
起動条件中のファイル監視ジョブの実行時に監視対象ファイルが存在している場合は,監視開始オプションによって監視条件が成立し,即時にイベントが発生します。
監視開始オプションは,イベントが1回成立した時点で満了します。イベント発生後もファイル監視ジョブは「監視中」の状態となって監視を継続します。ただし,オプション満了後は,新規ファイルの作成時に条件が成立します。
図8-12 監視対象ファイル名が指定されている起動条件中のファイル監視ジョブ
- 監視対象ファイル名が「*(ワイルドカード)」で指定されている,起動条件中のファイル監視ジョブ
起動条件中のファイル監視ジョブの実行時に,監視対象のディレクトリにあるすべてのファイルに対して,監視開始オプションによって監視条件が成立し,即時にイベントが発生します。
監視開始オプションは,各ファイルに対してイベントが1回ずつ成立した時点で満了します。イベント発生後もファイル監視ジョブは「監視中」の状態となって監視を継続します。ただし,オプションが成立したファイルは,新規ファイルの作成時に条件が成立します。
図8-13 監視対象ファイル名に「*(ワイルドカード)」が指定されている起動条件中のファイル監視ジョブ
補足事項
「*(ワイルドカード)」の使用については,「(2) ファイル名の指定方法」を参照してください。
- 「新規ファイル作成時に条件成立」を指定した場合(デフォルトの場合)
- ファイルの「作成」を監視しているファイル監視ジョブが実行中の状態になったときに,すでに監視対象ファイルが存在していても,監視条件成立にはなりません。ファイル監視ジョブは監視を継続します。
なお,クラスタシステムでJP1/AJS2を運用している場合,JP1/AJS2サービスがフェールオーバーしたあとに,監視開始オプションが設定されているファイル監視ジョブが再度実行されると,「ファイル監視ジョブの状態引き継ぎ」を有効にしている場合は,フェールオーバー前の状態で実行され,「ファイル監視ジョブの状態引き継ぎ」を無効にしている場合は,監視開始オプションが再び有効になります。
ファイル監視ジョブの監視開始オプションの指定方法については,マニュアル「JP1/Automatic Job Management System 2 操作ガイド 13.4.18 [詳細定義−[ファイル監視]]ダイアログボックス」またはマニュアル「JP1/Automatic Job Management System 2 コマンドリファレンス 2.2.10 ファイル監視ジョブ定義情報の記述方法」を参照してください。
ファイル監視ジョブが監視対象ファイルを監視している間の情報を,随時退避しておき,ジョブの状態を引き継ぐことができます。状態引き継ぎを行うように設定した場合,ファイル監視ジョブ一つにつき,一つの状態引き継ぎ情報格納ファイルが生成されます。
例えば,クラスタシステムで,ファイル監視ジョブの実行中にJP1/AJS2サービスが停止した場合,JP1/AJS2サービスの停止後,再度JP1/AJS2サービスが起動して,サービスが停止する前と同じファイル監視ジョブが実行されたときに,サービスが停止する前のファイル監視ジョブの監視状態を引き継いでジョブが実行されます。なお,クラスタシステムでなくても,ファイル監視ジョブの情報を引き継げます。
監視状態を引き継ぐには,ファイル監視ジョブが継続して動作している必要があります。ファイル監視ジョブが継続して動作するか,終了するかによって,監視状態が引き継がれるかどうかが異なります。
監視状態が引き継がれる条件を,次の表に示します。
ファイル監視ジョブの種類 サービスの再起動 停止を伴うフェールオーバー システムダウンによるフェールオーバー ジョブネット中の
ファイル監視ジョブジョブが終了するため,引き継がれない※ ジョブが終了するため,引き継がれない※ 引き継がれる 起動条件中のファイル監視ジョブ 引き継がれる 引き継がれる 引き継がれる
- 注※
- イベントジョブ実行継続オプションを併用していても,実行ホストのJP1/AJS2サービスの再起動または停止を伴うフェールオーバー時にはファイル監視ジョブがいったん終了します。ファイル監視ジョブが終了すると,退避していた状態引き継ぎ情報格納ファイルが削除されるため,監視対象ファイルの状態は引き継がれません。そのため,ファイル監視ジョブが実行中である実行ホストのJP1/AJS2サービスが停止してからJP1/AJS2サービスを再起動してイベント監視を再開するまでの間に発生したイベントは,検知されません。
- イベントジョブ実行継続オプションの詳細については,「8.5.8 JP1/AJS2のサービスが停止してもイベントジョブの実行を継続させる」を参照してください。
なお,次のような場合には,状態引き継ぎ情報格納ファイルが削除されます。
- 各ファイル監視ジョブに対して作成される状態引き継ぎ情報格納ファイルは,ファイル監視ジョブの終了時に削除されます。
- 状態引き継ぎを行ったあと,状態引き継ぎを行わない設定に変更した場合,状態引き継ぎ情報格納ファイルはすべて削除されます。
- コールドオプションを設定してJP1/AJS2サービスを起動した場合,状態引き継ぎ情報格納ファイルはすべて削除されます。
ファイル監視ジョブの状態引き継ぎオプションを設定した場合の動作例を次の図に示します。
図8-14 ファイル監視ジョブの状態引き継ぎオプションを設定した場合の動作例
ファイル監視ジョブの状態を引き継ぐ機能は,デフォルトでは無効になっています。有効にするには,ファイル監視ジョブを実行するすべてのホストおよびノードで設定を行ってください。クラスタシステムの場合は,実行系・待機系ともに設定が必要になります。設定手順については,マニュアル「JP1/Automatic Job Management System 2 セットアップガイド 7.12 ファイル監視ジョブの状態引き継ぎオプションの設定」(Windowsの場合),またはマニュアル「JP1/Automatic Job Management System 2 セットアップガイド 16.8 ファイル監視ジョブの状態引き継ぎオプションの設定」(UNIXの場合)を参照してください。
なお,2ギガバイト以上のファイルを監視する設定(ラージファイル対応オプション)を「対応する」から「対応しない」に変更し,2ギガバイト以上のファイルの情報を引き継いだ場合は,統合トレースログと実行結果詳細にKAVT2038-Eメッセージが出力され,ジョブは異常検出終了します。
ファイル監視ジョブを定義するときの注意事項を次に示します。
- 監視間隔を1〜9秒に設定したファイル監視ジョブを実行した場合,ファイルの更新発生(イベント発生)に対して,即時(1〜9秒)に後続ジョブが実行されるわけではありません。特に,多数のファイル監視ジョブを実行する場合,後続ジョブの実行までに時間が掛かることがあります。この場合,監視間隔には十分に余裕を持った値を設定してください。
ファイル監視間隔の算出式を次に示します。これは,ファイル監視ジョブの監視対象ファイル名を完全名で指定した場合に,最低限必要となる時間を算出するための式です。運用時には,算出された値よりも十分に余裕を持った値を設定することを推奨します。なお,監視間隔の下限値は,使用しているハードウェアなどによって異なるので注意してください。
- ファイル監視ジョブの監視間隔(下限値)の算出式
- (監視間隔)=0.9*単位時間(秒)当たりのイベント発生数※ / 単位時間(秒) + 0.02*ファイル監視ジョブ数
- 注※
- 「単位時間(秒)当たりのイベント発生数」とは,ある時間(秒)内に,ファイル監視ジョブが,監視対象ファイルの更新を検知する回数のことです。
例えば,100個のファイル監視ジョブを実行し,60秒間に50回のファイル更新が発生する場合の監視間隔は,次のように算出します。
監視間隔=0.9*50 / 60 + 0.02*100=2.75(約3秒)
この例の場合,監視間隔として3秒以上の値を設定することを推奨します。
- ファイル監視ジョブに指定する監視対象ファイル名を,「*(ワイルドカード)」を使用した総称名で指定した場合,UNIX環境でジョブを実行するとき,ファイル名取得のためのシェルの実行がOSの負担となります。このため,ファイル監視ジョブを多数実行すると,ファイル監視プロセスのCPU使用率が高くなってしまいます。
多数のファイル監視ジョブを実行する場合は,監視対象ファイル名を完全名で指定するか,または監視対象ファイル名を総称名で指定するときは,監視間隔には十分に余裕を持った値を設定することを推奨します。
- ファイル監視ジョブが監視できるファイルは,デフォルトではファイルサイズが2ギガバイト(2,147,483,647バイト)までのファイルです。これより大きいファイルを監視したい場合は,環境設定が必要です。設定方法については,Windowsホストの場合「JP1/Automatic Job Management System 2 セットアップガイド 4.5 その他のオプションの設定」を,UNIXホストの場合「JP1/Automatic Job Management System 2 セットアップガイド 16.21 ラージファイルを監視するための設定」を参照してください。
なお,08-00より前のバージョンから08-00以降へバージョンアップして2ギガバイト以上のファイルを監視できる設定をした場合,次に示す注意事項があります。
- ファイル監視ジョブの引き継ぎ情報FLSIZEをUNIXジョブなどのユーザープログラムで参照・使用している場合,2ギガバイト以上の値が引き継がれれてしまうおそれがあります。この場合,ユーザープログラムのファイルサイズを扱う処理でけたあふれが発生するおそれがあるため,ユーザープログラムの修正などの対処が必要です。
- ファイル監視ジョブの監視対象ファイル名は,JP1/AJS2が動作している環境変数LANGに準じた名称にしてください。それ以外の文字コードを使用したファイルを監視する場合の動作は保証できません。
- ファイル監視ジョブで監視対象となっているファイルが,別のイベントジョブまたはJP1/Baseのイベントサービス機能を使用したログファイル監視の対象にもなっている場合,監視対象ファイルはオープンされていると認識されるため,監視条件は成立しません。そのため,別のイベントジョブやJP1/Baseのイベントサービス機能を使用したログファイル監視の対象ファイルは,ファイル監視ジョブの監視対象としないでください。
- syslogやデバイススペシャルファイルなどのOSのシステムファイルは,不特定多数のプロセスのアクセス,ファイルへの頻繁なアクセス,およびファイルを使用しているプロセスを判断できないケースがありますので,監視対象としないでください。また,RAWファイルについてもファイルの更新,およびファイルを使用しているプロセスを判断することができないため,監視対象としないでください。
- ファイル監視ジョブに監視対象ファイル名を指定する場合,WindowsではネットワークドライブおよびUNCで参照できるファイルを,UNIXではNFSマウントで参照できるファイルを指定しても,動作の保証はできません。これは,ネットワーク切断など不安定な状態になるおそれがあること,また,監視対象ファイルがほかのシステムで使用中かどうかの判断ができないためです。ほかのシステムのファイルを監視する場合には,JP1/AJS2 - Agentをインストールして,ローカルのファイルとして監視してください。
- 頻繁にファイルのオープン・クローズを行い,データを追加書きするようなファイルについては,ファイル監視ジョブで正しく監視できません。ファイル監視ジョブの監視するタイミングと,ファイルのクローズが重なると,監視対象ファイルの更新処理が終了したとみなしてイベントが発生することがあります。このようなファイルを監視する場合には,直接ファイル監視ジョブで監視するのではなく,ファイル更新が終わったときに処理の完了を示す別ファイルを作成し,そのファイルを監視するような運用を推奨します。
- 「*(ワイルドカード)」を含む監視対象ファイル名で監視している場合の注意事項を次に示します。
- 同一の監視間隔内で発生したファイル監視イベントについて,ファイルの作成順,更新順,および削除順にファイル監視を行うことはできません。なお,イベント順序保証オプションは,発生したファイル監視イベントの順序が通信の状態などによって変更されないことを保証するものであり,ファイル監視ジョブの動作を変更するものではありません。
- ファイル監視ジョブの監視条件成立に関する注意事項を次に示します。
- 監視条件に「ファイルの削除」を指定し,監視開始時に監視対象ファイルが存在しなかった場合,そのファイルが一度作成され,その後削除されてから監視条件成立となります。
- 監視条件に「ファイルのサイズ変更」または「ファイルの最終書き込み時刻変更」を指定し,監視開始時に監視対象ファイルが存在しなかった場合,そのファイルが一度作成され,その後サイズの変更,または最終書き込み時刻の変更が行われてから監視条件成立となります。
なお,ファイルのサイズ変更,および最終書き込み時刻変更は,ディスクに実際に書き込まれてから監視条件成立となります。エディターなどで編集しているだけでは,監視条件成立にはなりません。
- ファイル監視ジョブの状態引き継ぎオプションを「行わない」という設定にしていると,ファイル監視ジョブがファイルを監視中にJP1/AJS2サービスが停止したときに,ファイル監視ジョブが監視中に持っていた情報が失われます。再度JP1/AJS2サービスを開始してファイル監視を実行した場合,前回のファイル監視情報は引き継がれません。
- ファイル監視ジョブは,監視間隔に指定した間隔でファイルをチェックします(「*」指定時は監視しているそれぞれのファイルをチェックします)。そのため,ある監視時刻から次回監視時刻までの間に,監視している一つのファイルに対して監視条件に合うファイル更新が複数回行われた場合でも,最後に行われた更新だけを検知します。また,多数のジョブで一度にファイル更新を検知すると,それぞれのジョブでイベント発行のための処理を行うため,次回監視時刻が遅れることがあります。次回監視時刻が遅延している間に,監視条件に合うファイル更新が複数回行われた場合でも,最後に行われた更新だけを検知します。
短い監視間隔を指定した場合,多数のジョブを監視していると,監視に監視間隔以上の時間が掛かることがあります。
- ファイル監視ジョブは,監視対象ファイルの状態の変更を検知した場合,クローズチェックによって監視対象ファイルをオープンしているプロセスがないかどうかをチェックしています。そのとき,ファイルがオープンされていないと判断した場合に,イベントが発生します。監視対象ファイルがオープンされている場合は,その時点でのイベントは発行しないで,再び監視中の状態になります。次回監視間隔の経過後に,再び監視対象ファイルをオープンしているプロセスがないかどうかをチェックします。つまり,監視対象ファイルがオープンされている間は,監視対象ファイルの状態の変更を検知していても,イベントは発行しません。
- ファイル監視ジョブは,監視対象ファイルの状態に変更がないかを監視間隔ごとに調べます。変更を検知したファイルについては,指定された監視条件(作成,サイズ変更,または最終書き込み時刻変更)に関係なく,クローズチェックを実施します。クローズチェックでは,監視対象ファイルを書き込みモードでオープンします。オープンできた場合はすぐにクローズして,監視対象ファイルをオープンしているプロセスがないと判断します。そのため,クローズチェックによるファイルのオープンからクローズまでの間,ほかのプログラムは監視対象ファイルにアクセスできません。したがって,イベントジョブや起動条件付きジョブネットで監視中のファイルをユーザープログラムから操作する場合は,ファイルアクセスの失敗を考慮し,ファイルアクセスのリトライ処理を組み込むなどの対策が必要です。
- ファイル監視ジョブの状態引き継ぎオプションを「行う」という設定をしていて,退避したJP1/AJS2のジョブネットワーク要素を実行する場合や,バックアップしたJP1/AJS2のインストール先ディレクトリ下の環境を使用するときは,JP1/AJS2サービスをコールドスタートしておく必要があります。JP1/AJS2サービスをコールドスタートしないで,バックアップしたJP1/AJS2のファイル監視ジョブを実行した場合,退避前の監視状態から監視を始めます。
- 情報格納ファイルや情報格納フォルダに何らかの異常が発生して,引き継ぎ状態を格納するファイルの作成や書き込みができない場合,KAVT2034-Wというメッセージを,統合トレースログ出力してからジョブの実行を継続します。この場合,監視状態を引き継ぐためのファイルは生成されません。
- ファイル監視ジョブの状態引き継ぎを「行う」という設定をしていて,起動条件のファイル監視ジョブを実行して,JP1/AJS2サービスを強制終了させた場合は,ファイル監視ジョブの状態を引き継ぎますが,JP1/AJS2サービスを計画終了させた場合には,ファイル監視ジョブの状態は引き継ぎません。
- 次に示すディレクトリには,ファイル監視プロセスの起動中,随時読み込み,書き込み処理を行っているファイルがあります。そのため,次に示すディレクトリにあるファイルは監視対象に指定しないでください。
- 物理ホストでの運用時
- Windowsの場合
- JP1/AJS2のインストール先フォルダ\jp1ajs2\sys
- UNIXの場合
- /var/opt/jp1ajs2/sys
- 論理ホストでの運用時
- Windowsの場合
- 共有フォルダ\jp1ajs2\sys
- UNIXの場合
- 共有ディレクトリ/jp1ajs2/sys
- Windowsでファイル監視ジョブを使用する場合で,次の二つの条件を満たすとき,予期したファイルとは異なるファイルの変更を検知することがあります。
- ファイル監視ジョブの監視対象ファイル名を,拡張子は3文字で固定して指定し,その他の部分はワイルドカードで指定している場合。
(例)
「C:\Temp\*.txt」のように監視対象ファイルを指定している場合。
- ファイル監視ジョブの監視フォルダの下に,拡張子が4文字以上,かつ拡張子の3文字目までが,1で指定した監視対象ファイル名の拡張子と一致するファイルがある場合。
(例)
「*.txt」という監視対象ファイル名を監視している場合(ワイルドカードを使用した前方一致の監視条件)で,監視フォルダの下に,「aaa.txt」,「aaa.txta」,「aaa.txtab」という三つのファイルがあり,どれかが更新されたとき,どのファイルが更新されても,ファイル監視ジョブによって監視条件と一致したとみなされてしまいます。拡張子の指定のしかたで,どのようなファイルが監視対象となるかの例を次の表に示します。
監視対象ファイル名 更新されるファイル名 aaa.tx aaa.txt aaa.txta aaa.txtab C:\Temp\*.tx ○ × × × C:\Temp\*.txt × ○ ○ ○ C:\Temp\*.txta × × ○ × C:\Temp\*.txtab × × × ○
- (凡例)
- ○:更新があった場合,イベントが発行される。
- ×:更新があった場合,イベントが発行されない。
- 転送ツールを使用して,監視対象ファイルの更新などをしている場合,ファイルを上書きしたときでも,「削除」,または「作成」という監視条件が成立したとみなしてしまうことがあります。意図しない監視条件で成立してしまうのは,使用しているツールの内部処理にファイルを削除する処理が入っている場合で,削除する処理と監視間隔のタイミングが一致すると,ユーザーの操作が実行されたとみなしてしまうことが原因です。この現象の発生を回避するためには,監視対象ファイルが常に上書きされる運用であっても,「作成」と「最終書き込み時刻変更」という監視条件を使用して監視することを推奨します。
- 起動条件に指定されたファイル監視ジョブが監視中のとき,ファイル監視ジョブの状態引き継ぎオプションを「行わない」から「行う」に変更し,JP1/AJS2を再起動するとKAVT2031-E,およびKAVT2034-Wのメッセージが統合トレースログに出力されます。これは,JP1/AJS2が再起動前にファイル監視ジョブの状態引き継ぎオプションが「行わない」であったため,再起動前のジョブの状態を引き継げなかったことを意味します。再起動前の状態を引き継ぐことができないので,ファイル監視ジョブが監視中のときには,ファイル監視ジョブの状態引き継ぎオプションを「行わない」から「行う」に変更しないでください。
- Windowsでファイル監視ジョブを使用する場合,監視対象ファイル名に「*.*」を指定すると,拡張子のないファイル名のファイルも検知します。
例えば,監視対象ファイル名に「C:\temp\*.*」を指定した場合,C:\temp下の次に示すファイル名のファイルが更新されるとイベントが発行されます。
- abc
- abc.txt
- abc.txt.txt
- 監視対象ファイルがシンボリックリンクの場合は,監視できません。ただし,監視対象ファイル名にシンボリックリンクしたディレクトリが含まれていても,ファイル自体がシンボリックリンクでなければ監視できます。
- Windowsのファイルシステムでは,次のファイル名が使用されます。
JP1/AJS2のファイル監視ジョブも,これらのファイル名を監視対象とします。そのため,ファイル監視ジョブは,監視対象ファイル名とWindowsが自動的に生成したショートファイル名が一致したファイルについてもイベントを検知します。監視対象ファイル名とショートファイル名が一致した場合,一見すると意図しないファイルについてイベントを検知したように見えます。
- ユーザーが任意の文字列を指定したロングファイル名
- Windowsが自動的に生成するショートファイル名(8.3形式)
ファイル監視ジョブが意図しないファイルを検知した場合は,コマンドプロンプトで次のコマンドを実行して監視対象ファイルのあるフォルダ配下のファイルのショートファイル名を出力し,監視対象ファイル名が意図しないファイルのショートファイル名と一致していないか確認してください。
ショートファイル名をファイル監視ジョブの監視対象にさせないようにするには,監視対象ファイル名を次のように指定してください。
dir 監視対象ファイルのあるフォルダのフルパス /x
- 監視対象ファイルに総称名を指定する場合は,ファイル名の固定文字列部分を8文字以上にする。
ショートファイル名を監視対象にしない場合と監視対象にする場合の監視対象ファイル名の定義例を,次の表に示します。
表8-18 ショートファイル名を監視対象にしない場合と監視対象にする場合の監視対象ファイル名の定義例
監視対象ファイル群 監視対象ファイル名で指定する総称名 ロングファイル名 ショートファイル名 C:\temp\ABCDEFGH001.log C:\temp\ABCDEF~1.log
- ショートファイル名を監視対象にしない場合
- C:\temp\ABCDEFGH*.log
- 固定文字列部分「ABCDEFGH」が8文字以上です。
- ショートファイル名を監視対象にする場合
- C:\temp\ABCDEF*.log
- 固定文字列部分「ABCDEF」が8文字未満です。
C:\temp\ABCDEFGH002.log C:\temp\ABCDEF~2.log C:\temp\ABCDEFGH003.log C:\temp\ABCDEF~3.log C:\temp\ABCDXXXXXXX.log C:\temp\ABCDEF~4.log
- 監視対象ファイル名に完全名を指定する場合は,ショートファイル名形式のファイル名を指定しない。
ショートファイル名形式のファイル名とは,8.3形式のショートファイル名をロングファイル名として命名したファイル名のことです。
補足事項
監視対象ファイル名にショートファイル名形式のファイル名を指定する場合は,指定するファイルと同じパス上にはショートファイル名形式のファイルだけを配置するようにしてください。
Copyright (C) 2006, 2010, Hitachi, Ltd.
Copyright (C) 2006, 2010, Hitachi Software Engineering Co., Ltd.