Prüfen ob Prozess gestartet, wenn nicht starten

Heavenwalker

Lt. Commander
Registriert
Nov. 2004
Beiträge
1.513
Sry leider viel mir keine kürzerer Topic ein.

Ich habe auf meinem Server einen Prozess laufen gelegentlich kann es vorkommen dass dieser Abstürzt.

Nun würde ich gerne in gewissen Intervallen prüfen ob der Prozess noch läuft, wenn dem nicht so ist dann soll er wieder gestartet werden.

Wie kann ich das bewerkstelligen...?
 
Mit einem ganz einfachen Skript in jeder erdenktlichen Programmier/Skriptsprache. Das Ding hat keine 5 Zeilen ;)
Ich kann dir da AutoIt ans Herz legen. Ist auf Automatisation ausgelegt und hat auch eine große deutsche Community (AutoIt.de), wo du immer sehr schnelle und kompetente Hilfe kriegst, wenn du sie brauchst und eine komplett in deutsch übersetze Dokumentation der Befehle.

Edit:
In AutoIt würde der Code so aussehen:
http://pastebin.com/byg1fhp4
 
Zuletzt bearbeitet:
Hast du auf dem Server die Powershell?

Hier gleich das Schnippsel:

$proc = Get-Process | Where-Object {$_.ProcessName -eq "DEIN_PROCESSNAME"}

if ($proc -imatch 'DEIN_PROCESSNAME')
{
'DEIN_PROCESSNAME ist aktiv - nix zu tun'
}
else
{
'DEIN_PROCESSNAME ist nicht aktiv - wird gestartet'
& 'PATH_TO_EXECUTABLE'
}
 
Zuletzt bearbeitet:
AutoIT:

Code:
AutoItSetOption("TrayIconHide", 1)

Do
  if ProcessExists("datei.exe") = 0 Then
    run("c:\programme\programm\datei.exe", "c:\programme\programm\")
  EndIf
  Sleep (30000)
Until 1 = 2

Gruß

//edit: oetzn hat im Prinzip schon das gleiche gepostet.
 
Zuletzt bearbeitet:
da hätte ich auch drauf kommen können auf AutoIT Danke für den Denkanstoß :-)
 
Fr4g3r schrieb:
AutoIT:

Code:
AutoItSetOption("TrayIconHide", 1)

Do
  if ProcessExists("datei.exe") = 0 Then
    run("c:\programme\programm\datei.exe", "c:\programme\programm\")
  EndIf
  Sleep (30000)
Until 1 = 2

Gruß

//edit: oetzn hat im Prinzip schon das gleiche gepostet.

Warum so eine komplizierte Schleife wenn man fragen darf?
 
Die ist kein Stück komplizierter als deine While?
Du hast einfach ein verkürztes If-Statement benutzt, da du in der Abfrage nur eine Anweisung hast.
Ich habe die Form gewählt die immer geht, auch wenn in der IF-Abfrage mehr als ein Kommando steht.
Performanter wird es dadurch zur Ausführungszeit aber auch nicht.

Kannst es auch so schreiben:

Do
if ProcessExists("datei.exe") = 0 Then run("c:\programme\programm\datei.exe", "c:\programme\programm\")
Sleep (30000)
Until 1 = 2

Damit ist es genau gleich und ein do until ist sicher nicht komplizierter als ein while :p

Gruß
 
Zuletzt bearbeitet:
Mich hat nur die Schreibweise verwundert von Do ... Until 1 = 2.
Da 1 nie 2 sein wird, kann man doch gleich eine While Schleife verwenden oder ? :D
Aber ist wohl Geschmackssache ;)
 
Zurück
Oben