[CentOS6][SOS JobScheduler] Perl アプリケーションのジョブを実行する


Create: 2013/03/14
LastUpdate: 2013/03/27
[ メニューに戻る ]

下図の環境を使用します。
環境の詳細を知りたい場合は、メニューに戻って構築手順を参照してください。


ここでは、JOB1(上図)をPerlで作成し、 StandaloneJob として実行してみます。
手順については、「JobScheduler FAQ」を参考にしました。
以下、Perlスクリプトの実行方法を3パターン紹介します。

1.[Script]タブを使用する方法


JOEで下図のようにHost-Aで実行するジョブを定義します。
[Script]タブで、以下のようにPerlスクリプトを記述します。


スクリプトの内容は以下のとおり。
JobSchedulerの内部APIを実装してジョブ名とパラメータを表示します。
use vars qw ($spooler $spooler_log $spooler_job $spooler_task);
print $spooler_job->name . " is running.\n";
print "param=" . $spooler_task->params->value("testParam") . "\n";
exit(0);
$spooler が付く変数は、JobScheduler の内部APIです。詳しくは、「Spooler - Application Program Interface (API)」を参照してください。
このコードを実行すると、JobSchedulerの libsosperlscript.so が使用され、このモジュールが、libperl.so 必要とするのですが、初期状態では見つけてくれません。
なので、Host-AのJobSchedulerAgent が libperl.so 見つけるようにするため、Host-Aのjobsユーザで以下のコマンドを実行してシンボリック・リンクを作成します。
$ cd /opt/sos-berlin.com/jobscheduler/scheduler_agent/lib
$ sudo ln -s /usr/lib/perl5/5.10.0/i386-linux-thread-multi/CORE/libperl.so ./libperl.so
JOEで下図のようにパラメータを定義します。


JOCでジョブを  実行 します。実行結果は以下のとおり。
ジョブ名とパラメータ値が表示されています。


2.[Process File]タブを使用する方法


Host-Aにjobsユーザでログインして、以下のようにテスト用のアプリケーションを作成します。
このプログラムは、環境変数をダンプします。
ファイル名は "/home/jobs/workspace/perl_proc.pl" とします。
#!/usr/bin/perl
use Data::Dumper;
print "perl_proc.pl is running.\n";
print Dumper(\%ENV);
exit(0);
このプログラムに実行権限を付与します。
$ chmod +x /home/jobs/workspace/perl_proc.pl
JOEで下図のようにジョブを定義します。また、上記1と同じくパラメータも定義します。


JOCでジョブを  実行 します。実行結果は以下のとおり。
シェルスクリプトと同様に環境変数でパラメータ値を参照できます。


3.[Includes]タブを使用する方法


Host-Aにテスト用のアプリケーションを作成します。 内容は以下のとおり。上記1と同じです。
ファイル名は "/home/jobs/workspace/perl_impl.pl" とします。
実行権限は不要です。
上記1と同じく、"libperl.so" のシンボリック・リンクは必要です。
use vars qw ($spooler $spooler_log $spooler_job $spooler_task);
print $spooler_job->name . " is running.\n";
print "param=" . $spooler_task->params->value("testParam") . "\n";
exit(0);
JOEで下図のようにジョブを定義します。また、上記1と同じくパラメータも定義します。

JOCでの実行結果は、上記1と同じです。


◆ 参考ドキュメント