sumylein
Goto Top

Programm überawchung und ggf neustart

Hi,

Ich habe folgendes Problem, ich habe ein Programm am laufen das teilweise abstürzt. Nun bräuchte ich ein programm was dieses überwacht und ggf neustartet.

Gibt es sowas in der Art schon?

Content-Key: 60859

Url: https://administrator.de/contentid/60859

Printed on: April 23, 2024 at 12:04 o'clock

Member: bastla
bastla Jun 08, 2007 at 12:22:16 (UTC)
Goto Top
Hallo Sumylein und willkommen im Forum!

Ein Tool kann ich Dir nicht nennen, aber eine einfach Lösung per Batch könnte so aussehen:
@echo off & setlocal
set Tsk=notepad.exe
set "Prog=%windir%\System32\notepad.exe"  
set Running=
for /f %%i in ('tasklist') do echo (%%i)|findstr /C:"(%Tsk%)" > nul && set Running=1  
if not defined Running start "Starte ..." "%Prog%"  
Der Eintrag bei "set Tsk" muss der Anzeige für das Programm im Windows-Taskmanager (Register "Prozesse") bzw der Ausgabe, die Du mit dem CMD-Befehl "tasklist" erhältst, entsprechen.

Die Batchdatei prüft bei jedem Aufruf, ob der angegebene Prozess gefunden wird und startet anderenfalls das in Zeile 3 angegebene Programm. Die Batchdatei kannst Du über einen geplanten Task in regelmäßigen Abständen (zB alle 30 Minuten, falls das genügt) ausführen lassen.

Grüße
bastla
Member: AxelHahn
AxelHahn Jun 08, 2007 at 12:22:30 (UTC)
Goto Top
Hi,

grundsätzlich ist das Prozedere einfach:

(1) du brauchst einen Testvorgang, der prüft, ob deine Anwendung da ist.
Da mein Blick in die Glaskugel nicht verraten konnte, um welche Art Software es sich handelt, kann ich es nur allg. formulieren. Ansätze wären:
a) prüfen des Ports (wenn es ein Server ist, der über einen definierten Port arbeitet)
b) prüfen einer konkreten Anfrage an dein Programm und Auswertung der Antwort
, ob diese korrekt ist (das klappt bei Diensten, wie Web, Datenbank, DNS etc ganz gut).
c) Prozessliste durchsehhen, ob der Prozess da ist (Kommando tasklist als Stichwort).

(2) Wenn Test von 1) fehlschlägt, das Programm beenden (falls es nur hängt) und dann neu starten.

Wenn dein Test funktioniert, packst du das Ganze in den Taskplaner.

Viele Grüsse
-= Axel =-
Member: Sumylein
Sumylein Jun 08, 2007 at 17:39:46 (UTC)
Goto Top
Also Punkt 2 trifft es gut überprüfen ob das Programm läuft, wenn es hängt oder nichtmehr im Process Explorer ist soll es neugestartet werden.
Member: paulkuhn
paulkuhn Nov 11, 2010 at 17:02:27 (UTC)
Goto Top
Hallo...

Die batch-Datei funktioniert ja prima unter XP.

Aber wie sieht das Ganze unter 2000/Server 2000 aus?
Da gibt es ja scheinbar keine Tasklist.exe.
Ist hier etwas vergleichbares mit Bordmitteln möglich?

Danke

Paul
Member: bastla
bastla Nov 11, 2010 at 17:30:22 (UTC)
Goto Top
Hallo paulkuhn!

Soferne Du "Bordmittel" eng auslegst, käme eigentlich nur die "tlist.exe" aus der "SUPPORT.CAB" (Installations-CD, Ordner "\SUPPORT\TOOLS" (oder von hier) infrage.

Bei nur etwas weiterer Auslegung könntest Du auf PsList (ehemals SysInternals, jetzt schon länger MS) zurückgreifen (wobei hier darauf zu achten ist, dass der Dateityp nicht ausgegeben wird und daher auch nicht danach gesucht werden kann - es dürfte daher in Zeile 2 anstelle von "notepad.exe" nur "notepad" zugewiesen werden).

Grüße
bastla
Member: paulkuhn
paulkuhn Nov 12, 2010 at 10:16:30 (UTC)
Goto Top
Hallo bastla,

funktioniert mit PsList. Zu beachten sind halt die kleinen Änderungen am Original-Script, wie von dir beschrieben.

Herzlichen Dank