Prozess nach Zeitraum X killen

morph01

Cadet 3rd Year
Registriert
Okt. 2013
Beiträge
62
Hallo zusammen,

habe nachfolgendes Problem mit der Bitte um Unterstützung:

Auf einem meiner Windows-Systeme läuft ein Prozess, welcher sich regelmäßig in einer Endlosschleife verliert.
Der Prozess startet sich zeitgesteuert selbstständig mit einem anderen Systemuser und exportiert Daten.
Wenn er in die Endlosschleife läuft, dann werden die Folgeexporte nicht mehr ausgeführt (es wird immer gewartet bis der vorherige Export beendet wurde).

Bis ich das Ursprungsproblem in meiner Exportengine gefunden habe, wollte ich nachfolgenden Workaround umsetzen, damit die Folgeexporte wieder laufen:

Alle 15 Minuten wird ein Prozess gestartet, welcher prüft ob der Prozess (export.exe) aktiv ist und mindestens 10 Minuten läuft (Kein Export dauert länger als 5 Minuten), falls ja dann soll der Prozess beendet werden.

Folgende Ansätze habe ich bisher verfolgt:
1. Umsetzung über „normale“ Batch:
Code:
taskkill.exe /IM export.exe /F /FI "CPUTIME gt 00:10:00"
"Könnte" funktionieren, da es mir aber um die Laufzeit des Prozesses geht und nicht um die CPUTIME komm ich damit (soweit ich das sehe) nicht zum gewünschten Szenario.
Ein passendes Filterelement von taskkill.exe für meine Anforderung habe ich leider nicht gefunden.

2. Umsetzung über PowerShell (bisher noch nie verwendet)

Code:
(Get-WmiObject win32_process -Filter "CreationDate <'$date' and name = export.exe'").Terminate()

Würde funktionieren, wenn $date den richtigen Inhalt hätte.
Erwartet werden Werte wie beispielsweise „20140429085258.332435+120“, also Datum in Format yyyymmddhhmmss.uuuuuu+NNN (u=ms;N=Differenz zu UTC).
Leider bekomm ich bisher weder $date richtig gesetzt, noch vom dort enthaltenen Wert (=Zeitpunkt) zehn Minuten abgezogen.

Habe bereits versucht $date so zu definiere, hat leider nicht funktioniert:
Code:
$date=get-Date -format yyyymmddhhmmss.uuuuuu+nnn

Daher nachfolgende Fragen:
1. Wie bekomme ich $date so gesetzt, dass es richtig formatiert ist?
2. Wie bekomm ich von diesem „richtigen“ $date die 10-Minuten abgezogen?
3. Gibt es vielleicht eine viel bessere/leichtere Lösung für mein Problem?

Vorab vielen, vielen Dank für die Hilfe!
 
Zuletzt bearbeitet: (' vor $date gesetzt)
Klingt so kompliziert alles :)

Wenn das OS nicht gerade XP ist, kannst du doch in der Aufgabenplanung dein Export hinterlegen und ebenfalls das Beenden der Aufgabe nach 10min.

lg
fire
 
Vll komme ich noch dazu, mir das gleich näher anzuschauen, als erstes fällt mir auf, dass du wahrscheinlich yyyyMMddHHmmss brauchst (HH 24-Stunden, hh 12 Stunden Version)
 
firexs schrieb:
Klingt so kompliziert alles :)

Wenn das OS nicht gerade XP ist, kannst du doch in der Aufgabenplanung dein Export hinterlegen und ebenfalls das Beenden der Aufgabe nach 10min.

lg
fire

Danke für den Tipp.
Kann ich leider nicht umsetzen, da die export.exe wiederrum von einem anderen Prozess gestartet wird, welcher den Prozess verteilt auf verschiedenen Servern ausführt. Ohne jetzt auf die komplette Struktur einzugehen ist die Aufgabenplanung leider nicht das richtige Werkzeug.

Trotzdem Danke :)
 
Zuletzt bearbeitet:
Sweepi schrieb:
Gefunden: http://www.techguy.at/powershell-get-date/
Code:
PS C:\Users\XX> get-date -format yyyyMMddHHmm.000000+120((Get-Date).AddMinutes(10))
201404291240.000000+120

bzw. -10 zum subtrahieren

Wow, Danke Dir - klappt 1A
Bin trotz circa 40 Tab´s nicht drauf gekommen, danke auch für den dazugehörigen Link.
Musste noch beim "get-date -format" die Sekunden ranhängen - jetzt funktioniert es aber.

nochmal DANKE!!!!!!!!!
 
Zurück
Oben