Create: 2013/03/24
LastUpdate: 2013/05/27
下図の環境を使用します。
環境の詳細を知りたい場合は、メニューに戻って構築手順を参照してください。
JobScheduler では、任意のカレンダーを作成してジョブの実行時間を指定できます。
ここでは、以下のようなカレンダーを作成して、営業日の20:00 に実行するジョブを定義してみます。
- 営業日を月曜日~金曜日に設定する。
- 祝日を、2日分だけ設定する。(確認用)
1.カレンダーの定義
まず、新規でカレンダーを作成します。
JOEの左側のメニューで [Schedules] をクリックすると下図の画面が表示されます。
[New Schedule]ボタンをクリックして新しいカレンダーを作成します。
起動時刻を設定します。
左側のメニューで、新しく作成された [schedule1] → [Every Day] をクリックすると下図の画面が表示されます。
[New Period] ボタンをクリックして、以下の新しい起動時刻を入力します。
- [Start Time] で "Single Start" を選択して、"20:00:00" を設定します。これで、Weekday の 20:00 に起動されます。
- [When Holiday] で "next non holiday" を選択します。これで休日の場合は、翌営業日にスケジューリングされます。
下図のように表示されたらOKです。
任意の Weekday として、月曜日~金曜日まで設定します。
左側のメニューで、[any Weekday] をクリックすると下図の画面が表示されます。
[Weekdays]で曜日を指定して、[Add Weekday]ボタンをクリックします。
テスト用に "2013/3/25" と "2013/3/26" を休日に設定します。
左側メニューで [Non Working Days]をクリックすると下図の画面が表示されます。
[Holidays] で日付を指定して、[Add Date]ボタンをクリックします。
2.ジョブの定義
上記1で作成したカレンダーを使用するようにジョブを設定します。
左側のメニューで [Run Time] をクリックします。
[Schedule] で "schedule1" を選択します。
ちなみに、[Schedule]でカレンダーを適用すると、ジョブ個別の [Run Time] の設定はできなくなります。
以上で、設定は完了です。
[フロッピーディスク]アイコンをクリックして保存すると、スケジューリングされます。
3.計画起動の予定時刻確認
JOCでジョブの計画起動の日時を見ると、下図のように表示されます。
[Run time defined by] にカレンダーの名前が表示されます。
[Next start]に次の起動日時が表示されます。(赤枠)
JOCで確認した日が 2013/3/24(日) の 16:00です。
3/24(日) 20:00 は、Weekday ではないので次のWeekdayへ
↓
3/25(月) 20:00 は、休日なので次のWeekdayへ
↓
3/26(火) 20:00 は、休日なので次のWeekdayへ
というわけで、2013/3/27(水曜) 20:00 が、次の起動日時になります。↓
3/25(月) 20:00 は、休日なので次のWeekdayへ
↓
3/26(火) 20:00 は、休日なので次のWeekdayへ
[Schedules]タブは、下図のように表示されます。
カレンダーごとに、それを使用しているジョブを見ることができます。
4.運用カレンダーの確認
例えば、1週間後など、将来の起動予定日時を確認したい場合は、Manageサーバにjobsユーザでログインして以下のコマンドを実行します。
以下のコマンドでは、"2013/4/1" ~ "2013/4/9" までの予定を表示しています。
<show_calendar/>の詳細は、「Reference Documentation」を参照してください。
$ sos-berlin.com/jobscheduler/scheduler/scheduler_home/bin/jobscheduler.sh command "<show_calendar from='2013-04-01T00:00:00' before='2013-04-10T00:00:00'/>" | xmllint --format - <?xml version="1.0" encoding="ISO-8859-1"?> <spooler> <answer time="2013-03-28 09:45:44.016"> <calendar> <at at="2013-04-01T20:00:00" job="/sos/update/scheduler_check_updates"/> <at at="2013-04-08T20:00:00" job="/sos/update/scheduler_check_updates"/> <at at="2013-04-01T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-02T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-03T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-04T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-05T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-06T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-07T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-08T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-09T00:00:01" job="/sos/dailyschedule/CreateDaysSchedule"/> <at at="2013-04-01T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <at at="2013-04-02T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <at at="2013-04-03T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <at at="2013-04-04T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <at at="2013-04-05T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <at at="2013-04-08T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <at at="2013-04-09T20:00:00" schedule="/test/schedule1" job="/test/shell_job"/> <period begin="2013-04-01T00:00:00" end="2013-04-02T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-02T00:00:00" end="2013-04-03T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-03T00:00:00" end="2013-04-04T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-04T00:00:00" end="2013-04-05T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-05T00:00:00" end="2013-04-06T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-06T00:00:00" end="2013-04-07T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-07T00:00:00" end="2013-04-08T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-08T00:00:00" end="2013-04-09T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> <period begin="2013-04-09T00:00:00" end="2013-04-10T00:00:00" repeat="1800" job="/sos/dailyschedule/CheckDaysSchedule"/> </calendar> </answer> </spooler><show_calendar/>コマンドはJOCでも実行できます。
上記と同じようにコマンドを実行して全体のスケジュールを確認したい場合は、[Menu]ボタンをクリックしてメニューから、[Show start time]をクリックします。
特定のジョブだけ確認したい場合は、下図のように、ジョブを右クリックして、メニューから [Show start time] を選択します。
下図のダイアログが表示されたら、確認したい期間を入力して、[submit]ボタンをクリックします。
下図のように、起動予定日時が表示されます。
出力形式は、"html"、"xml"、"csv" の3パターンから選べます。
ちなにみ、下図のように JID でも確認できます。
ただし、画面で確認できるのは、設定変更の翌日からです。
JID に表示する情報は、毎日 00:00:01 に起動する /sos/dailyschedule/CreateDaysSchedule と、/sos/dailyschedule/CheckDaysScheduleで生成しているようです。
この2つを即時実行すれば、JIDに表示している情報を更新できます。
なお、私が試した限りでは、7日間しか表示できませんでした。
■ 補足
上記のように設定したスケジュールとは別に、ある期間、一時的に、スケジュールを変えたい場合、代替スケジュールを適用することができます。
たとえば、月曜日~金曜日の10:00 に起動する代替スケジュール(schedule2)を作成し、上記で作成した schedule1 の代替として 4/2 と 4/3の2日間だけschedule2を適用することができます。
まず、上記で作成した schedule1 は、XML定義で見ると以下のようになります。
この定義は、このまま使用します。
<schedule> <period when_holiday="next_non_holiday" single_start="20:00"/> <weekdays> <day day="1"/> <day day="2"/> <day day="3"/> <day day="4"/> <day day="5"/> </weekdays> <holidays> <holiday date="2013-03-25"/> <holiday date="2013-03-26"/> </holidays> </schedule>次に、schedule1 の代替スケジュールとして schedule2 を、以下のように定義します。
schedule2 は、月曜日~金曜日の10:00 に起動し、代替スケジュールとして適用する期間は、4/2 と 4/3 の2日間です。
<schedule substitute="/test/schedule1" valid_from="2013-04-02 00:00:00" valid_to="2013-04-03 24:00:00"> <period when_holiday="next_non_holiday" single_start="10:00"/> <weekdays> <day day="1"/> <day day="2"/> <day day="3"/> <day day="4"/> <day day="5"/> </weekdays> </schedule>これを JOC の [Schedule]タブで見てみると、下図のとおり。
表示時点でアクティブなスケジュールが緑色でマークされます。
起動予定日時を見てみると、下図のとおり、4/2 と 4/3 は 代替スケジュールを適用して 10:00 に起動するようになっています。