Zschimmer GmbH Impressum und Kontakt

Job Scheduler     Erste Seite   –   Konfiguration in XML

  XML     API     Register


logo

XML-Element  <job>     (Konfiguration)

<job
force_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.

Verhalten mit <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.

Eltern-Elemente

<jobs>  

  – Jobs

Attribute

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

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:

Meldungen

[ERROR] SCHEDULER-322 min_tasks=(1) is greater than max_tasks=(2)  
[warn] SCHEDULER-970 task(1) ended immediately after start, so min_tasks=(2) doesn't lead to new tasks 
[debug3] SCHEDULER-969 Less than min_tasks=(1) are running. New tasks will be started. Reason: (2)  

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 SCHEDULER-279).

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 SCHEDULER-974 darauf hin.

Siehe auch <commands on_exit_code="SIGTERM"> und das Gnu-Kommando man 7 signal.

Meldungen

[warn] SCHEDULER-279 Process terminated with signal (1) (name(2)
[warn] SCHEDULER-337 Signal (1) is unknown on this operating system and is ignored 
[info] SCHEDULER-974 Last error does not stop the job if the task aborts (after kill or crash) with any signal listed in ignore_signals="(1) ". In this case, expect warning SCHEDULER-279 

Beispiel  

<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.

Meldungen

[warn] SCHEDULER-846 After task exception and due to stop_on_error='no', the order has been moved to error_state='(1)
[debug3] SCHEDULER-977 Job is not stopping because of <job stop_on_error="no">. Task error was: (1)  
[debug3] SCHEDULER-978 Job is stopping because of <job stop_on_error="yes">. Task error was: (1)  

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 SCHEDULER-711 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 SCHEDULER-711 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.

Kind-Elemente

<settings>  

  – Einstellungen für einen Job

<description>  

  – Beschreibung

<lock.use>  

  – Deklaration einer Sperre

<lock.use> kann wiederholt werden.

<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

<start_when_directory_changed> kann wiederholt werden.

<delay_after_error>  

  – Job nach Fehler verzögern

<delay_after_error> kann wiederholt werden.

<delay_order_after_setback>  

  – Auftrag nach Rückstellung verzögern

<delay_order_after_setback> kann wiederholt werden.

<run_time>  

  – Laufzeiten

<commands>  

  – Nach Ende der Task auszuführende Kommandos

<commands> kann wiederholt werden.


Software- und Organisations-Service GmbH

Zuletzt geändert von Joacim Zschimmer, 2009-05-07