Create: 2013/03/19
LastUpdate: 2013/03/27
下図の環境を使用します。
環境の詳細を知りたい場合は、メニューに戻って構築手順を参照してください。
JobScheduler では、ジョブで定義したプログラムの実行前、または実行後に任意のスクリプトを実行することができます。
ここでは、JOB1(上図)に <monitor> を定義して、ジョブの実行前に動的にパラメータ値を設定してみます。
手順については、「Reference Documentation」を参考にしました。
JOB1 では、別サーバ上のファイルを GET する処理を実行し、パラメータでファイル名を設定するようにします。
このファイル名には、処理日の日付(YYYYMMDD 形式)を含むことにして、ジョブを実行するたびにパラメータ値の変更が必要とします。
1.ジョブ(monitorなし)の定義
まずは、<monitor>を使用せず、別サーバからファイルを GET するジョブを定義して動作確認します。
ファイル転送の処理には、JobScheduler が提供するJavaアプリケーションを使用します。
JOEで下図のようにHost-Aで実行するジョブを定義します。
[ClassName]には、"sos.scheduler.ftp.JobSchedulerFTPReceive" を入力します。
下図のようにパラメータを設定します。
- ftp_protocol ・・・ 転送プロトコル。 ftp/sftp/ftps
- ftp_host ・・・ ホスト名またはIPアドレス
- ftp_user ・・・ ユーザ
- ftp_password ・・・ パスワード
- ssh_auth_method ・・・ sftpの場合、認証方式を設定
- ftp_file_path ・・・ ターゲットのファイルパス
- ftp_local_dir ・・・ ローカルのファイル格納先ディレクトリ
2.ジョブ(mnitorなし)の動作確認
JOCでジョブを 実行 します。実行結果は、下図のとおり
Host-A に、以下のようにGETしたファイルが存在すればOKです。
$ ls -l /home/jobs
合計 12
drwxr-xr-x 3 jobs jobs 4096 3月 5 07:16 2013 sos-berlin.com
-rw-r--r-- 1 jobs jobs 28 3月 19 13:02 2013 test_20130319.dat
drwxrwxr-x 5 jobs jobs 4096 3月 14 13:07 2013 workspace
3.<monitor>の設定
上記で作成したジョブから "ftp_file_path" のパラメータを削除して、<monitor>で設定するようにします。
ここでは、perl スクリプトを使用しますが、perl スクリプトを使用する場合は、環境設定が必要になります。
環境設定の手順は、「 [CentOS6][SOS JobScheduler] Perl アプリケーションのジョブを実行する」を参照してください。
また、perl スクリプトで日付を扱うために、DateTime モジュールを使用します。
Host-A の jobs ユーザで以下のようにコマンドを実行するとインストールできます。
$ sudo yum install perl-DateTimeJOEで<monitor>を設定します。
下図のように、[Pre-/Post-Processing] をクリックし、[New]ボタンをクリックします。
新しく [process0] が作成されるので、それをクリックします。
下図のような画面が表示されたら、[Language]で "perlScript" を選択し、[Script]タブにプログラムを入力します。
上図で入力した、プログラムは以下のとおり。
処理日を取得して、"ftp_file_path" にファイル名をセットしています。
試しに、ファイル名のパスは省略していますが、sos ユーザのホームディレクトリからファイルをGETするはずです。
use DateTime; use vars qw ($spooler $spooler_log $spooler_job $spooler_task); sub spooler_task_before { $spooler_log->info("start task before"); my $dt = DateTime->now(time_zone => 'local'); my $today = $dt->strftime('%Y%m%d'); $spooler_task->params->set_var('ftp_file_path', "test_$today.dat"); return 1; }$spooler で始まる変数は JobScheduler のAPIです。詳しくは、「Spooler - Application Program Interface (API)」を参照してください。
サブルーチン名にはルールがあり、名称で処理するタイミングが決まります。spooler_task_before であれば、タスクの実行前、spooler_task_after であれば、タスクの後にスクリプトが実行されます。
サーブルーチンの正常終了時は 1 を返し、異常終了時は 0 を返します。
4.<monitor>の動作確認
JOCでジョブを 実行 します。実行結果は、下図のとおり。
"file path" を見ると、<monitor>で設定した値を確認できます。
Host-A でGETしたファイルを見ると以下のとおり。成功です。
$ ls -l
合計 12
drwxr-xr-x 3 jobs jobs 4096 3月 5 07:16 2013 sos-berlin.com
-rw-r--r-- 1 jobs jobs 28 3月 19 14:03 2013 test_20130319.dat
drwxrwxr-x 5 jobs jobs 4096 3月 14 13:07 2013 workspac