Create: 2013/04/10
LastUpdate: 2013/06/04
ジョブには、以下のようなオプションを設定できます。(マニュアルから引用)
enabled | = "yes|no" | Disable a Job. |
force_idle_timeout | = "yes_no" | Task ended by idle_timeout despite min_task |
idle_timeout | = "duration" | Limit for the waiting_for_order state |
ignore_signals | = "all|signalnames" | |
java_options | = "string" | |
min_tasks | = "number" | The minimum number of tasks kept running |
name | = "jobname" | |
order | = "yes_no" | Order Controlled Job |
priority | = "process_priority" | |
process_class | = "process_class" | |
replace | = "yes|no" | |
spooler_id | = "" | |
stop_on_error | = "yes|no" | |
tasks | = "number" | The maximum number of tasks |
temporary | = "yes_no" | |
timeout | = "duration" | The time allowed for an operation |
title | = "text" | |
visible | = "yes|no|never" | |
warn_if_longer_than | = "HH:MM:SS|seconds|percentage%" | 注)バグあり (2013/05現在未解決) |
warn_if_longer_than | = "HH:MM:SS|seconds|percentage%" |
JOEだと、下図の画面で設定できます。
いくつか試したので、以下に紹介します。
1.tasks
Task の多重度を指定します。デフォルトは "1" です。
ジョブを実行した状態を Task と呼びます。
同じジョブを複数実行して、いくつも同じ Task を生成できますが、デフォルトでは、シーケンシャルに Task が実行されます。
タスクを並列に実行したい場合は、tasks に多重度を指定します。
例えば、tasks="2" とすれば、2つの Task は並列に実行されます。
並列に Task を実行している場合は、JOC で下図のように 複数の Task を見ることができます。
ちなみに、デフォルトの tasks="1" で Task がシーケンシャルに実行されているとき、実行待ち状態の Task は、[Task Queue]タブで確認できます。
2.min_tasks
ここで指定した Task の数だけ、常に実行中になります。デフォルトは "0" です。
例えば、min_tasks="1" にして xml ファイルを保存すると、すぐにジョブが実行されます。
ジョブの実行が終わっても、繰り返し、同じジョブが実行されます。
このオプションを使用すれば、何らかのメッセージを受信待ちして、処理を行うジョブを作成できそうです。
ただし、他のオプションとの兼ね合いで、動作は変わるようなので詳細はマニュアルを参照してください。
3.timeout
Task の処理時間を制限します。
Taskの処理時間が、ここで指定した時間を越えるとTask は、stop します。
例えば、timeout="10" として、30秒スリープするジョブを実行した場合、10秒後に Task は Kill されて stop します。
4.warn_if_longer_than / warn_if_shorter_than
ジョブの処理時間を監視します。
ジョブの処理時間が、warn_if_longer_than に設定した時間をオーバーした場合は、ジョブを警告終了にします。
ジョブの処理時間が、warn_if_shorter_than に設定した時間より短い場合は、ジョブを警告終了にします。
また、ジョブ警告終了時のメール送信設定が"no"であっても、メールの宛先が設定されていれば、メールが送信されます。
注意)
warn_if_longer_than には、バグがあり、2013/05現在、未解決です。
ローカル(Managerサーバ)の シェルスクリプトでは、正常に動作しません。
Agentのシェルスクリプトは問題ありません。
ローカルで、このパラメータを使用する場合は、内部APIを実装する必要があるみたいです。(※私が動作確認したのは perl だけです)
たとえば、warn_if_longer_than に "10" を設定すると、ジョブの処理時間が 10 秒を超えると、警告終了します。warn_if_longer_than には、バグがあり、2013/05現在、未解決です。
ローカル(Managerサーバ)の シェルスクリプトでは、正常に動作しません。
Agentのシェルスクリプトは問題ありません。
ローカルで、このパラメータを使用する場合は、内部APIを実装する必要があるみたいです。(※私が動作確認したのは perl だけです)
下図は、20秒スリープするジョブが、警告終了したときの実行結果です。
2013-05-21 08:10:17.090 [info] SCHEDULER-918 state=starting (at=2013-05-21 08:10:17.074) 2013-05-21 08:10:17.125 [info] SCHEDULER-987 Starting process: '/bin/sh' '-c' '"/tmp/jobs/sos.rmOPj9"' 2013-05-21 08:10:18.124 [info] test_job01 processed 2013-05-21 08:10:18.124 [info] Current Timestamp: 2013-05-21 08:09:23 2013-05-21 08:10:18.124 [info] Current Hostname: centos6y 2013-05-21 08:10:18.124 [info] Current Username: jobs 2013-05-21 08:10:27.090 [WARN] SCHEDULER-712 Task runs longer than the expected duration of 00:00:10 2013-05-21 08:10:37.472 [info] END以下は、警告メールの内容です。
From jobs@localhost.localdomain Tue May 21 08:10:27 2013 Return-Path: <jobs@localhost.localdomain> X-Original-To: jobs@localhost Delivered-To: jobs@localhost.localdomain Date: Tue, 21 May 2013 08:10:27 +0900 (JST) From: "Scheduler centos6a:4444 -id=scheduler" <jobs@localhost.localdomain> To: jobs@localhost.localdomain Subject: Task test/test_job01:15374: SCHEDULER-712 Task runs longer than the expected duration of 00:00:10 Content-Type: text/plain; charset=us-ascii X-SOS-Spooler: Status: R 2013-05-21 08:10:27.100 Job Scheduler -id=scheduler host=centos6a port=4444ジョブ警告終了時のメール送信設定を"yes" にした場合は、上記のほかに、実行結果のメールも送信されます。