■はじめに
こんにちは!
今回、この記事ではファイルチェックジョブの概要と設定方法に加え、実際の活用例についてご紹介します。
■ファイルチェックジョブとは
ファイルチェックジョブとは、特定のファイルを監視し、そのファイルに指定した変化(作成、変更、削除)が生じた場合に終了するジョブです。ファイルの状態変化による判断をジョブフローの中に組み込むことができます。
■ファイルチェック実行契機との違い
ファイルチェック実行契機とは、ファイルに指定した変化が生じるとジョブユニット(もしくはジョブネット、ジョブ)が実行される機能です。
大きな違いは、ファイルチェックジョブはジョブフロー内に組み込むことができ、ファイルに指定した変化が生じてから後続のジョブを実行させる「待機」が可能である点です。
ファイルチェック実行契機の詳細については以下の記事で紹介していますので、ご参考にしてください。
【Hinemos ファイルチェック実行契機】ファイルの作成・変更・削除をきっかけとしたジョブの実行と注意点
■ファイルチェックジョブ設定方法
では、ファイルチェックジョブの設定方法を見ていきます。
設定画面および各設定項目は以下の通りです。

- スコープ:ファイルチェックを行う対象のスコープを指定します。
- ディレクトリ:ファイルチェック対象のディレクトリを指定します。シンボリックリンクの設定も可能です。
- ファイル名(正規表現):ファイルチェック対象のファイル名を指定します。正規表現を使用して、複数ファイルを対象とすることができます。
- ※正規表現で複数のファイルが該当するような設定をした場合、該当するファイルが一つでも検知されると、ジョブが終了状態となります。
- スコープ処理:選択している条件を満たした時にジョブを終了させたい場合に選択します。
- 全てのノード:全てのノードで条件を満たした時にジョブを終了させたい場合に選択します。
- いずれかのノード:いずれかのノードで条件を満たした時にジョブを終了させたい場合に選択します。
- <動作例:スコープにノードA・ノードBの2つを指定した場合>
- 全てのノード:ノードAとBの両方でファイルが作成されたら、その時点でジョブが終了します。
- いずれかのノード:ノードAとBのどちらか一方でファイルが作成されたら、その時点でジョブが終了します。
- チェック種別:ファイルチェックの条件を指定します。ファイルチェック実行契機と異なり、条件を複数指定できます。複数指定した場合はOR条件になります。
- 作成:ファイルの作成を検知する場合、チェックを入れます。
- ジョブ開始前に作成されたファイルも対象にする:チェックを入れると、ジョブ開始時に既にファイルが存在した場合も条件を満たしたと判定します。
- 削除:ファイルの削除を検知する場合に、チェックを入れます。
- 変更:ファイルの変更を検知する場合に、チェックを入れます。
- タイムスタンプ変更:タイムスタンプ変更をもって変更と判断する場合に選択します。
- ファイルサイズ変更:ファイルサイズ変更をもって変更と判断する場合に選択します。
- 作成:ファイルの作成を検知する場合、チェックを入れます。
- ファイルの使用中は判定しない:チェックを入れると、ファイルが使用中の場合、 ファイルチェックの判定を持ち越します。
- 条件を満たさなければ終了する:チェックを入れた場合、一定期間条件を満たさなければ終了します。
●ファイルチェックの間隔について
ファイルチェックジョブは、デフォルトでは10秒(10,000ms)間隔でファイルの確認を行いますが、この間隔はHinemosエージェントの設定ファイルで変更可能です。
検知の即時性を高めたい場合や、逆に負荷を考慮して間隔を広げたい場合は、以下のパラメータを変更してください。
設定ファイルの場所
- Hinemosエージェントのインストールフォルダ内、confフォルダ配下のAgent.properties
変更パラメータ
- パラメータ名:job.filecheck.interval(単位:ミリ秒)
※設定変更後は、Hinemosエージェントの再起動が必要です。
※なお、この設定は「ファイルチェック実行契機」のファイルチェック間隔にも適用されます。
■ファイルチェックジョブ活用例
先行のコマンドジョブによるファイルの作成を契機にファイルチェックジョブが終了し、後続のコマンドジョブを実行するジョブフローを作成します。
今回の活用例では、あえて「ファイルチェックジョブがないジョブフロー」と「あるフロー」を比較し、ファイルチェックジョブの有用性を解説します。
まずは、ジョブフローで使用する各ジョブの設定についてご紹介します。
●先行のコマンドジョブ:ファイルの作成 (CMD_CreateData)
コマンドジョブ自体はすぐに正常終了しますが、実際のファイル作成には20秒を要するコマンドジョブ(CMD_CreateData)の設定は以下です。
|
1 |
nohup bash -c 'sleep 20; echo "ファイル作成完了" > /tmp/data.txt' > /dev/null 2>&1 & |

●ファイルチェックジョブ:作成待機 (FC_CheckFile)
次に、ファイル作成を契機に実行が終了するファイルチェックジョブ(FC_CheckFile)の設定は以下です。

●後続のコマンドジョブ:ファイルの確認・出力 (CMD_OutputData)
最後に、ファイルが作成されたことを確認できたらファイルの内容を出力し、作成されていなければ警告で終了するコマンドジョブ(CMD_OutputData)の設定は以下です。
|
1 |
[ -f /tmp/data.txt ] && (echo "【成功】データを確認"; cat /tmp/data.txt) || (echo "【失敗】データなし"; exit 1) |

●ファイルチェックジョブがない場合
ジョブユニットの配下に、先行のコマンドジョブ(CMD_CreateData)、後続のコマンドジョブ(CMD_OutputData)を作成します。待ち条件を以下のように設定します。

ジョブユニットを実行します。

実行結果は以下です。


先行のコマンドジョブ(CMD_CreateData)は、実行した瞬間に正常に終了してしまいます。しかし、実際にファイルが作成されるのは「20秒後」のため、後続のコマンドジョブ(CMD_OutputData)の実行時点ではファイルが存在せず、警告で終了してしまいます。
●ファイルチェックジョブがある場合
ジョブユニットの配下に、先行のコマンドジョブ(CMD_CreateData)、ファイルチェックジョブ(FC_CheckFile)、後続のコマンドジョブ(CMD_OutputData)を作成します。待ち条件を以下のように設定します。

ジョブユニットを実行します。

実行結果は以下です。


後続のコマンドジョブ(CMD_OutputData)が正常に終了し、ファイルの内容が正常に出力されました。
ファイルチェックジョブの実行時間から、ファイルが生成されるまでの約20秒間待機していることが確認できます。
このようにして、ファイルチェックジョブをジョブフロー内に組み込むことで、ファイルに指定の変化が生じるまで後続ジョブを待機させることができます。
■おわりに
この記事ではファイルチェックジョブの概要と設定方法に加え、実際の活用例についてご紹介しました。
Hinemosの運用にあたって、お役に立てれば幸いです。
Xをフォローする
メルマガに登録する