AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Überwachen und Neu-Starten von Programmen
Thema durchsuchen
Ansicht
Themen-Optionen

Überwachen und Neu-Starten von Programmen

Ein Thema von texmurphy901 · begonnen am 14. Nov 2008 · letzter Beitrag vom 14. Nov 2008
Antwort Antwort
texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#1

Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 07:50
Hallo allerseits,

ich habe da ein Problem der folgenden Art.
In einem Netzwerk läuft auf dem Server ein selbst geschriebenes Programm A.EXE, welches ein Gerät mit Sensoren überwacht.
Dieses Programm MUSS dauerhaft UND auf dem Server laufen!
Nun möchte ich auf einer der Workstations ein Programm B.EXE laufen haben, welches A.Exe überwacht und ggf. neu startet.
Da ich A und B selber schreibe ist die Überwachung eigentlich kein Problem. Wollte das über eine TCP/IP Verbindung lösen, so dass B.EXE einfach nur regelmäßig A.EXE anpingen muss.
Meine Fragen wäre allerdings:
1. Wie kann ich ein Programm auf einem fernen Rechner starten. Kann ich IPs im Pfad übergeben?
2. Da B.EXE unter Benutzerrechten läuft, aber A.EXE unter Administratorrechten, kann ich da A.Exe überhaupt fern starten? Da müßte ich doch zumindest User/Password mitliefern können?Wie geht das?


Ich danke schon mal für die kommenden Tips

Gruß
Murphy
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 07:51
Und wieso denkst du das das Programm "A" nicht mehr läuft (Absturz etc?)
Falls du an User-interaktion denkst würde ich "A" als NT-Dienst realisieren welcher beim Systemstart automatish startet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 09:14
Hallo,

eine direkte Antwort auf Deine Frage habe ich nicht, aber einen Vorschlag.

Zu meinem Job gehört es, diverse Server zu überwachen. Überall laufen irgendwelche Dienste, die immer laufen müssen. Davon stürzt einer regelmäßig ab (und reißt - selten - andere Dienste früher oder später mit). Nun habe ich mir eine Möglichkeit geschaffen, von Server X die Dienste auf Server A, B, C... zu prüfen und ggfls. neu zu starten. Server X wird seinerseits von Server A, B, C... überwacht. Also jeder guckt auf jeden und repariert oder schickt 'ne Mail, dass da was nicht stimmt.

Wenn Du nun aus A.EXE einen Dienst machst, kannst Du (unter Zuhilfenahme von z. B. psservice.exe von SysInternals) per Batch prüfen, ob der Dienst A.EXE noch läuft und wenn nicht den Dienst A.EXE neu starten. Dies geht serverübergreifend, sofern Du über die entsprechenden Rechte verfügst (bzw. Anmeldedaten per Kommandozeilenparameter übergibst).

Das könnte für Deine Aufgabenstellung sicherlich eine Alternative sein.

Mehr dazu findest Du hier. Damit könntest Du Dir ein Programm oder einen Dienst schreiben, der anderen Dienste überwacht. Vorteil ist, der Überwachungsdienst kann auch laufen, wenn niemand am Rechner angemeldet ist und wird selbst beim Neustart des Überwachungsrechners gestartet. Andernfalls müsstest Du ja nicht nur durch B.EXE prüfen, ob A.EXE läuft, sondern auch sicherstellen, dass B.EXE läuft. Die Dienste könnten sich aber auch auf einem Server gegenseitig überwachen und ggfls. neustarten, während ein zweiter Rechner dies wiederum überprüft.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 10:09
Zitat von texmurphy901:
ich habe da ein Problem der folgenden Art.
In einem Netzwerk läuft auf dem Server ein selbst geschriebenes Programm A.EXE, welches ein Gerät mit Sensoren überwacht.
Dieses Programm MUSS dauerhaft UND auf dem Server laufen!
Nunja, dafür brauchst Du aber keine Applikation B, gell. Wenn Programm A.EXE als Service implementiert ist, kannst Du Windows mitteilen Dich bitte neu zu starten wenn Dein Service crashen sollte . Ist imho die deutlich elegantere Methode .
Fridolin Walther
  Mit Zitat antworten Zitat
texmurphy901

Registriert seit: 8. Nov 2006
35 Beiträge
 
#5

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 11:10
Zitat von 0xF30FC7:
Nunja, dafür brauchst Du aber keine Applikation B, gell. Wenn Programm A.EXE als Service implementiert ist, kannst Du Windows mitteilen Dich bitte neu zu starten wenn Dein Service crashen sollte . Ist imho die deutlich elegantere Methode .
Ja das klingt natürlich einleuchtend.
Besten Dank!

Gruß
Murphy
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 11:20
Zitat von 0xF30FC7:
Zitat von texmurphy901:
ich habe da ein Problem der folgenden Art.
In einem Netzwerk läuft auf dem Server ein selbst geschriebenes Programm A.EXE, welches ein Gerät mit Sensoren überwacht.
Dieses Programm MUSS dauerhaft UND auf dem Server laufen!
Nunja, dafür brauchst Du aber keine Applikation B, gell. Wenn Programm A.EXE als Service implementiert ist, kannst Du Windows mitteilen Dich bitte neu zu starten wenn Dein Service crashen sollte . Ist imho die deutlich elegantere Methode .
Prinzipiell richtig, dummerweise funktioniert das aber bei dem Dienst, der mir Probleme macht nicht. Service B wäre hier also eine zusätzliche Überwachung, die auch dann noch funktioniert, wenn der Server, auf dem Dienst A läuft noch ein paar Probleme mehr, als nur den nicht laufenden Dienst A, hat. Aber hier kommt es darauf an, wieviel Aufwand man treiben will oder muss. Bevorzuge hier halt neben den "Selbstreparaturmechanismen" eines Systemes auch noch die Überwachung durch ein anderes, unabhängiges System.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 11:25
Ganz ehrlich ... da solltet ihr den Fehler im System beheben und nicht an den Symptomen herumdoktorn. Denn selbst wenn Dein Service das in irgend einer Weise abfängt, andere Services tun dies nicht.
Fridolin Walther
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 11:43
Zitat von 0xF30FC7:
Ganz ehrlich ... da solltet ihr den Fehler im System beheben und nicht an den Symptomen herumdoktorn. Denn selbst wenn Dein Service das in irgend einer Weise abfängt, andere Services tun dies nicht.
Du hast Recht, aber der sch...-Dienst ist von Mirco... und ist einfach saumäßig buggy, aber für die Verbindung von Exchange und Domino gibt's da leider keine Alternative. Sonst wäre der Mist längst weg.
Und mein Dienst hält uns die administrative Arbeit in erträglichem Maße. Der Mailverkehr läuft so (in der Regel) auch Nachts und am Wochenende weiter, durch den Neustart des Buggydienstes, wenn eben kein Admin erreichbar ist. Wenn der Dienst weg war, bekommen wir per Mail auf jedenfall eine Nachricht, egal ob Neustart erfolgreich oder nicht, damit wir schauen können, ob wir da was machen müssen. Sonst musst Du alle Viertelstunde (mindestens) die Mailboxen auf hängengebliebene Sachen prüfen. Und die Spamwellen, die das Straucheln des Dienstes nicht unerheblich mitverursachen, kommen leider meist Nachts und an Wochenenden.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Überwachen und Neu-Starten von Programmen

  Alt 14. Nov 2008, 12:13
Ok, also falls Du sowas implementieren willst, ist das einfachste direkt auf den Service Manager des Servers zuzugreifen. Das geht auch Remote. Dort kannst Du dann minütlich checken ob Dein Service noch läuft und ihn bei Bedarf neu starten. Dazu müsste der "Watch Dog" allerdings wahrscheinlich im selben Netzwerk stehen, wie der Server. Was allerdings ohnehin klar sein sollte, weil son Interface um Services neu zu Starten frei im Netz zugänglich zu machen wär Selbstmord .

Näheres dazu hier:
http://msdn.microsoft.com/en-us/library/ms684323(VS.85).aspx

Für Dich relevant ist der lpMachineName Parameter.

[EDIT]Mir is erst später aufgefallen das Du ja gar nicht der Thread Ersteller bist, sondern eine ähnliche Lösung auf Basis der SysInternals Tools vorgeschlagen hast. Ich lass den Hinweis auf den Service Manager mal drin falls jemand mal sowas sucht .[/EDIT]
Fridolin Walther
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz