Dienstag, 12. Januar 2010

Aufgaben nur zu bestimmten Zeiten ausführen

Manchmal ergibt sich die Voraussetzung, dass Aufgaben nicht kontinuierlich ausgeführt werden können oder dürfen, z. Bsp. weil während der Wartungsphase ein Server nicht zur Verfügung steht oder es schlicht weg nicht nötig ist.
In der WatchDirectory Professional-Version steht der WatchDirectory Zeitplanerdienst zur Verfügung, um Aktionen zeitgesteuert auszuführen. Die Besonderheit des Zeitplanerdienstes ist es, dass außerhalb der definierten Zeitspanne die Überwachung NICHT beendet wird, es wird lediglich die Aktion der Aufgabe nicht ausgeführt. Daraus sieht man, dass auch außerhalb der definierten Zeitspannen das überwachte Verzeichnis erreichbar sein muss, da die Aufgabe sich sonst mit einem Fehler beendet.

Um die Überwachung ganz einzustellen, muss man die Aufgabe beenden. Dies lässt sich je nach Konfiguration automatisieren:

A) die Aufgabe ist als Windows-Dienst gestartet:
Jede Aufgabe, die als Windows-Dienst gestartet ist, trägt den Namen watchDirectory:[aufgabenname], wobei [aufgabenname] durch den Namen der jeweiligen Aufgabe zu ersetzen ist. Mit dem DOS-Befehl
net stop watchDirectory:[aufgabenname] 
lässt sich der Dienst über die Kommandozeile beenden.
net start watchDirectory:[aufgabenname]
startet die Aufgabe wieder.
Beide Befehle lassen sich eine .bat-Datei schreiben und über die windowseigene
Funktion "Geplante Tasks" automatisch zu einer bestimmten Uhrzeit oder beim Herunterfahren/Starten ausführen.

B) die Aufgabe ist normal gestartet (manuell oder im AutoStart-Ordner):
Hier lässt sich die Aufgabe mit folgendem DOS-Befehl beenden:
"C:\Programme\watchDirectory\wdrun.exe" -stop [aufgabenname]
start "Aufgabe1" "C:\Programme\watchDirectory\wdrun.exe" -start [aufgabenname]
startet die Aufgabe wieder. Der Name "Aufgabe1" ist nur der Titel des DOS-Fensters, es kann an dieser Stelle eine beliebige Zeichenkette verwendet werden. Ggf. muss der Pfad zum Installationsverzeichnis angepasst werden.

Übrigens:
Die Befehle lassen sich auch in ein WakeUP/ShutDOWN-Script intergrieren, so dass die Aufgabe beendet wird, wenn der überwachte Server herunterfährt und automatisch startet, wenn der Server wieder online ist.

[Diesen Posting auf Englisch lesen / Read this post in English]