SOS JobSchedulerでジョブを作ってみよう

ここまでSOS JobSchedulerの紹介やインストール方法の説明をしてきましたが、ついにジョブを作って実行してみましょう。

今回作るジョブは、Wordpressにアップロードした画像ファイルをtar.gzで圧縮してバックアップするものです。実用的ですね。

また、JobSchedulerはCentOSにインストールされているものとし、JOE(JobScheduler Object Editor)はWindowsで動かして、FTP経由でCentOS側のHot Folderに直接書き込むことにします。
JOEはFTPやWebDavなどの方法で、直接リモートサーバに導入されているJobSchedulerの設定ファイルを編集することが出来るのです。JobSchedulerはHot Folderとして指定されているディレクトリのファイルが更新されると、自動的に読み込まれます。

FTPでHot Folderを開くように設定する

WindowsでJOEを起動し、メインメニューからOpen Hot Folder by FTPを選択します。

Open Hot Folderというダイアログが開くので、最初の実行時はProfileの作成をします。(下記参照)
Profileの作成後、ConnectボタンをクリックするとFTP接続が行われ、サーバ側のディレクトリが表示されるので、Hot Folderとして開きたいディレクトリを選択します。(New Folderでディレクトリを作成しても構いません。)

Profileボタンをクリックすると、Profilesダイアログが開きます。

Name: 適当に名前を付けましょう
Protocol: FTPと初期入力されているので、そのままにします
Host Name or IP Address: JobSchedulerが導入されているサーバのホスト名かIPアドレスを入力します
※当然ですが、FTPサーバが起動していて、ログイン出来る必要があります。
Port: 初期値の21のままで良いでしょう(FTPポートが異なる場合は変更します)
User Name: FTP接続時のユーザ名を入力します(ディレクトリへの書き込み権限が必要です)
Password: FTP接続時のパスワードを入力します
Root Directory: FTP接続時に開くディレクトリを指定します
※JobSchedulerのインストール時に作成されたconfig/liveディレクトリを指定すると良いでしょう
例: /home/scheduler/sos-berlin.com/jobscheduler/scheduler/config/live
Directory For Local Copy: サーバ上のファイルをキャッシュするためのローカル側のディレクトリを指定します
Save Password: パスワードを保存する場合はチェックします
Transfer Mode: ASCIIで良いでしょう

ジョブの作成

Hot FolderへのFTP接続が成功すると、このような画面になります。
今回作成するジョブはスタンドアロンジョブ(単独で起動できるジョブ。ジョブチェーンに含めることは出来ない)として作成します。

実際にジョブを作成します。JOEでは直接、実行したいスクリプトを書くことができます。(もちろん、別に作成したシェルスクリプトを読み込むことも出来ます。また、Languageオプションを変えれば、Java Classなどを実行することも出来ます。)

ここで入力するのは、Job Nameと、実行したいスクリプトそのものくらいです。
Job Nameは、WordpressFileBackupJobとしました。保存すると、JobSchedulerサーバ上にWordpressFileBackupJob.job.xmlというXMLファイルが生成されます。

今回作成したスクリプトは下記のようなものです。

echo "starting WordPressFileBackupJob..."

WP_UPLOAD_DIR=$SCHEDULER_PARAM_WP_UPLOAD_DIR
BACKUP_DIR=$SCHEDULER_PARAM_BACKUP_DIR

echo "WP_UPLOAD_DIR: $WP_UPLOAD_DIR"
echo "BACKUP_DIR: $BAKCUP_DIR"

TIMESTAMP=`date '+%Y%m%d%H%M%S'`
FILENAME="wp_upload_${TIMESTAMP}.tar.gz"

echo "FILENAME: $FILENAME"

tar cvzf $BACKUP_DIR/$FILENAME $WP_UPLOAD_DIR/*

echo "WordpressFileBackupJob completed."

exit 0

何の変哲もないシェルスクリプトですが、注目したいのはパラメータの受け渡し部分です。
WP_UPLOAD_DIR=$SCHEDULER_PARAM_WP_UPLOAD_DIRという行がありますが、JobSchedulerでは、パラメータは必ずSCHEDULER_PARAM_というプリフィックスが付きます。

パラメータ値のセットはJOEから行います。

今回は下記のようなパラメータを設定しました。

WP_UPLOAD_DIR: /srv/wordpress/wp-content/uploads
BACKUP_DIR: /opt/backup

ジョブの実行

JOEでジョブを作成し保存すると、自動的に作成したジョブがJobSchedulerに読み込まれます。
JOC(JobScheduler Operation Centre)を開いてみましょう。デフォルトでは、JobSchedulerをインストールしたサーバのポート4444を、Webブラウザで開きます。

このように、表示されるはずです。

ジョブを右クリックするとコンテキストメニューが表示されるので、すぐに実行してみるためにStart task immediatelyをクリックします。これで、すぐにジョブの実行が始まります。

他にも、下記のようなメニューがあります。

Start task at: 指定した日時に1回実行する。
Start tast parametrized: パラメータを指定して実行する。(実行日時も指定できる)
Set run time: 繰り返し実行などを指定する。

ジョブをクリックして選択すると、画面右にジョブの詳細情報とTask Historyが表示されます。
どうやら、ジョブが実行され、1秒後に問題なく終了したようですね。

ということで、今回はJobSchedulerでジョブを作成し実行してみました。
次回はもう一つジョブを作成して、ジョブチェーンを組んでみることにしましょう。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。