Job Scheduler Erste Seite – Konfiguration in XML |
<jobforce_idle_timeout |
= "yes_no"
|
idle_timeout beendet Task trotz min_task |
idle_timeout |
= "dauer"
|
Frist für den Zustand waiting_for_order |
ignore_signals |
= "all|signalnames"
|
|
java_options |
= "string"
|
|
min_tasks |
= "zahl"
|
Mindeste Anzahl der stets laufenden Tasks |
name |
= "jobname"
|
|
order |
= "yes_no"
|
Auftragsgesteuerter Job |
priority |
= "process_priority"
|
|
process_class |
= "prozessklasse"
|
|
replace |
= "yes|no"
|
|
spooler_id |
= ""
|
|
stop_on_error |
= "yes|no"
|
|
tasks |
= "zahl"
|
Maximale Anzahl Tasks |
temporary |
= "yes_no"
|
|
timeout |
= "dauer"
|
Frist für eine Operation |
title |
= "text"
|
|
visible |
= "yes|no|never"
|
|
warn_if_longer_than |
= "HH:MM:SS|seconds|percentage%"
|
|
warn_if_shorter_than |
= "HH:MM:SS|seconds|percentage%"
|
>
<settings ...> |
Einstellungen für einen Job |
<description ...> |
Beschreibung |
<lock.use ...> |
Deklaration einer Sperre |
<environment ...> |
Umgebungsvariablen |
<params ...> |
Parameter |
<script ...> |
Programm-Code |
<process ...> |
Externes Programm (alternativ zu <script>) |
<monitor ...> |
Monitor, zum Überwachen des Jobs |
<start_when_directory_changed ...> |
Verzeichnis überwachen |
<delay_after_error ...> |
Job nach Fehler verzögern |
<delay_order_after_setback ...> |
Auftrag nach Rückstellung verzögern |
<run_time ...> |
Laufzeiten |
<commands ...> |
Nach Ende der Task auszuführende Kommandos |
</job>
Definiert einen Job mit Programmcode, Laufzeit usw.
<base>
Ergänzt ein Element
<job>
an der entsprechenden Stelle mit gleichem Attribut name= aus der Basiskonfiguration. Hier angegebene Attribute überschreiben die aus der Basiskonfiguration.
– Jobs |
spooler_id="spooler_id"
Das Element ist nur wirksam, wenn dieses Attribut gleich dem Parameter -id= vom Scheduler-Start ist, oder wenn beim Scheduler-Start der Parameter -id= nicht angegeben worden ist.
name="jobname"
Jeder Job hat einen eigenen Namen.
Wenn ein Job mit demselben Namen in einer Basiskonfiguration bereit definiert worden ist, können hier die Einstellungen des Jobs geändert oder ergänzt werden.
title="text"
Eine einzeilige Beschreibung des Jobs.
order="yes_no" Auftragsgesteuerter Job
Bei order="yes" ist der Job auftragsgesteuert. Der Scheduler startet diesen Job nur, wenn ein Auftrag vorliegt.
Ein Skript kann mit Job.order_queue das Attribut prüfen.
process_class="prozessklasse"
Gibt den Namen der Prozessklasse an, in der Tasks dieses Jobs laufen sollen. Die Prozessklassen werden mit <process_classes> definiert.
tasks="zahl" (Initialwert: 1) Maximale Anzahl Tasks
Von einem Job können mehrere Tasks gleichzeitig laufen. Dieses Attribut begrenzt deren Anzahl.
<lock.use>: Zusammen mit einer exklusiven Sperre ist nur tasks="1" sinnvoll, sie erlaubt nur eine Task.
min_tasks="zahl" (Initialwert: 0) Mindeste Anzahl der stets laufenden Tasks
Der Scheduler sorgt dafür, das wenigstens die angegebene Anzahl Tasks läuft. So lassen sich auftragsgesteuerte Tasks in Bereitschaft bringen, die sehr lange für ihre Initialisierung brauchen.
<job tasks="…"> muss groß genug sein.
Der Scheduler startet weitere Tasks, wenn
<run_time>) beginnt <modify_job cmd="unstop">: der Job wird entstoppt <modify_job cmd="continue">: alle Tasks des Jobs werden fortgesetzt <modify_job cmd="wake">: der Job wird geweckt min_tasks verlangt <run_time> mit einer Periode den Start zulässt pending oder running ist (also nicht gestoppt wird oder gestoppt ist). Um ein Heißlaufen zu verhindern, startet der Scheduler keine neuen Tasks, nachdem sich eine sofort beendet hat. Nur in folgenden Fällen führt das Ende einer Task zum Start einer neuen:
spooler_process() wurde aufgerufen. running_waiting_for_order, nicht wenn <job idle_timeout="0">). Task.delay_spooler_process verzögert. <process> oder <script language="shell">) und der Prozess hat sich nicht sofort nach Start beendet. timeout="dauer" Frist für eine Operation
Befristet eine Task-Operation (spooler_open, spooler_process etc.) oder bei einer Nicht-API-Task (<process> oder <script language="shell">) die ganze Task. Nach Ablauf der Frist bricht der Scheduler die Task ab.
dauer kann in Sekunden oder im Format HH:MM oder HH:MM:SS angegeben werden.
idle_timeout="dauer" (Initialwert: 5) Frist für den Zustand waiting_for_order
Begrenzt den Leerlauf eines auftragsgesteuerten Jobs (order="yes"). Wenn eine Task auf den nächsten Auftrag wartet und in der Frist kein Auftrag eintrifft, beendet der Scheduler sie.
dauer kann in Sekunden oder im Format HH:MM oder HH:MM:SS angegeben werden.
idle_timeout="never" lässt den Job unbegrenzt laufen, nur noch abhängig von <run_time>.
Siehe auch <job force_idle_timeout="…">.
force_idle_timeout="yes_no" (Initialwert: no) idle_timeout beendet Task trotz min_task
Nur wirksam mit <job min_tasks ≥ "0"> und <job idle_timeout="…">.
force_idle_timeout="yes" beendet nach Ablauf von idle_timeout die Task, auch wenn daraufhin min_tasks unterschritten wird. Erst anschließend führt min_tasks zum Start einer neuen Task.
Damit lassen sich Tasks beenden, die im Leerlauf eine Ressource (z.B. eine Datenbank) nicht zu lange belegen dürfen, weil diese sich sonst abkoppelt.
priority="process_priority"
Eingestellt können die Werte idle, below_normal, normal, above_normal und high oder die numerischen Werte des Betriebsystems.
Wenn die Priorität nicht gesetzt werden kann, führt das nicht zu einem Fehler.
Ein Prozess mit hoher Priorität kann Ihren Rechner blockieren.
Siehe Task.priority_class.
temporary="yes_no"
Bei temporary="yes" ist der Job temporär. Nur für <add_jobs>. Nach der Ausführung wird der Job gelöscht und ist dann unbekannt.
java_options="string"
Wirkt nur, wenn der Job als eigener Prozess ausgeführt wird (s. <process_classes>) und der Job oder der Monitor in Java implementiert ist. Die Optionen werden zusammen mit den Optionen aus <config java_options="…"> Java übergeben. Wie gleichnamige Optionen interpretiert werden, hängt von Java ab.
visible="yes|no|never" (Initialwert: yes)
visible="no" und visible="never" lassen den Job im Ergebnis von <show_jobs> und <show_state> unsichtbar.
Bei visible="no" setzt der Scheduler den Job sichtbar, sobald eine Task eingereiht wird. Bei visible="never" ist das nicht der Fall.
ignore_signals="all|signalnames" (Initialwert: no)
Wirksam nur unter Unix.
Ein Job, dessen Task-Prozess mit Signal abbricht, führt zum Stopp des Jobs. Ursache eines Signals ist ein Abbruch der Task durch das System-Kommando kill oder durch einen Programmabbruch.
Wenn ignore_signals nicht angegeben ist, stoppt eine mit Signal abbrechene Task den Job (mit Meldung ).
ignore_signals="all" lässt den Job nicht stoppen.
Statt "all" können Sie auch eine Liste von Signalnamen angeben (durch Leerzeichen getrennt). Dabei sind, abhängig vom Betriebssystem, diese Signalnamen bekannt: SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGTRAP, SIGABRT, SIGIOT, SIGBUS, SIGFPE, SIGKILL, SIGUSR1, SIGSEGV, SIGUSR2, SIGPIPE, SIGALRM, SIGTERM, SIGSTKFLT, SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU, SIGURG, SIGXCPU, SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH, SIGPOLL, SIGIO, SIGPWR und SIGSYS. Signal-Namen, die das Betriebsystem nicht kennt, werden mit Warnung ignoriert.
Weil eine mit einem zu ignorierenden Signal abbrechende Task trotzdem zuerst einen TCP-Verbindungsfehler (ECONNRESET) hervorruft, führen TCP-Verbindungsfehler nur dann zum Stopp des Jobs, wenn ignore_signals="…" nicht zutrifft. Der Scheduler weist mit der Meldung darauf hin.
Siehe auch <commands on_exit_code="SIGTERM"> und das Gnu-Kommando man 7 signal.
<job name="my_job" ignore_signals="SIGTERM SIGKILL">
stop_on_error="yes|no" (Initialwert: yes)
Die Voreinstellung stop_on_error="yes" stoppt den Job, wenn eine Task mit Exception oder mit einer Fehlermeldung "[ERROR]" in ihrem Task-Protokoll endet. Eine Fehlermeldung kann z.B. mit spooler_log.error() geschrieben werden.
stop_on_error="no" lässt den Job in diesen Fällen nicht stoppen. Endet spooler_process() mit Exception, versetzt der Scheduler den Auftrag in den Fehlerzustand (<job_chain_node error_state="…">).
Die Einstellung hat keine Wirkung, wenn <delay_after_error> oder Job.delay_after_error verwendet wird.
replace="yes|no" (Initialwert: yes)
replace="yes" lässt diese Job-Definition eine evtl. bereits vorhandene ersetzen. Wenn das nicht möglich ist, weil z.B. gerade eine Task läuft, dann ersetzt der Scheduler den Job später.
Ein auftragsgesteuerte Job (<job order="yes">) kann nicht ersetzt werden.
warn_if_shorter_than="HH:MM:SS|seconds|percentage%"
Wenn ein Jobschritt vor der angegebenen Zeit beendet wird, gibt der Scheduler die Warnung aus.
Die Zeit kann im den Formaten HH:MM, HH:MM:SS, als Sekundenzahl oder als Prozentangabe angegeben werden. Dabei sind 100% die durchschnittliche Laufzeit der bisherigen Jobschritte, ermittelt aus der Datenbanktabelle SCHEDULER_HISTORY.
warn_if_longer_than="HH:MM:SS|seconds|percentage%"
Wenn ein Jobschritt länger als die angegebenen Zeit dauert, gibt der Scheduler die Warnung aus.
Die Zeit kann im den Formaten HH:MM, HH:MM:SS, als Sekundenzahl oder als Prozentangabe angegeben werden. Dabei sind 100% die durchschnittliche Laufzeit der bisherigen Jobschritte, ermittelt aus der Datenbanktabelle SCHEDULER_HISTORY.
– Einstellungen für einen Job |
– Beschreibung |
– Deklaration einer Sperre |
<lock.use>
kann wiederholt werden.
– Umgebungsvariablen |
– Parameter |
– Programm-Code |
– Externes Programm (alternativ zu <script>) |
– Monitor, zum Überwachen des Jobs |
– Verzeichnis überwachen |
<start_when_directory_changed>
kann wiederholt werden.
– Job nach Fehler verzögern |
<delay_after_error>
kann wiederholt werden.
– Auftrag nach Rückstellung verzögern |
<delay_order_after_setback>
kann wiederholt werden.
– Laufzeiten |
– Nach Ende der Task auszuführende Kommandos |
<commands>
kann wiederholt werden.
Zuletzt geändert von Joacim Zschimmer, 2009-05-07 |