Ich habe einen Windows-Dienst, der alle paar Tage unerwartet beendet wird. Gibt es eine einfache Möglichkeit, es zu überwachen, um sicherzustellen, dass es bei einem Absturz schnell neu gestartet wird?
quelle
Ich habe einen Windows-Dienst, der alle paar Tage unerwartet beendet wird. Gibt es eine einfache Möglichkeit, es zu überwachen, um sicherzustellen, dass es bei einem Absturz schnell neu gestartet wird?
Wählen Sie unter der Anwendung "Dienste" die Eigenschaften des betreffenden Dienstes aus.
Anzeigen des Wiederherstellungsregisters - es gibt alle möglichen Optionen - Ich habe First & Second Failure (Erster und Zweiter Fehler) auf Restart the Service (Neustart des Dienstes) und Third (Dritter Fehler) eingestellt, um ein Stapelverarbeitungsprogramm auszuführen , mit dem BLAT eine E-Mail mit der dritten Fehlerbenachrichtigung versendet .
Sie sollten auch den Reset Fail Count auf 1 setzen, um den Fail Count täglich zurückzusetzen.
BEARBEITEN:
Sieht so aus, als könnten Sie dies über eine Befehlszeile tun:
SC failure w3svc reset= 432000 actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"
Ihre MyBatchFile.CMD-Datei kann folgendermaßen aussehen:
blat - -body "Service W3svc Failed" -subject "SERVICE ERROR" -to [email protected] -server SMTP.Example.com -f [email protected]
SC failure w3svc command= "MyBatchFile.cmd"
sollte es im Pfad oder C: \ Windows \ System32 sein. Sie können es in ein beliebiges Verzeichnis stellen, wenn Sie einen vollständigen Pfad verwenden, z. B.SC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"
Öffnen Sie "Services.msc", doppelklicken Sie auf den Dienst, um die Eigenschaften des Dienstes zu öffnen. Es gibt eine Registerkarte "Wiederherstellung". Mit diesen Einstellungen sollten Sie den Dienst bei einem Fehler neu starten können.
quelle
Versuchen Sie, die Erholungszeit auf Null zu setzen:
Das Befehlszeilenäquivalent:
SC failure YOUR_SERVICE_NAME reset= 0 actions= restart/0/restart/0/restart/0
Auf jeden Fall funktioniert die automatische Wiederherstellung manchmal nicht richtig und es wird empfohlen, Software von Drittanbietern zu verwenden. Es scheint, als würde ein ordnungsgemäßer Service-Exit mit einem Exit-Code von 0 Fenstern nicht versuchen, ihn wiederherzustellen.
quelle
Ich verwende ServiceKeeper auf meinem Windows 2008-Server bei HostForLife.eu und es funktioniert sehr gut. Zuvor hatte ich eine Überprüfung von ServiceHawk, bevorzuge jedoch die Verwendung von ServiceKeeper, um die Verwaltung und die Benutzeroberfläche zu vereinfachen.
quelle
Ich hatte eine ähnliche Anforderung, einen Dienst zu starten, wenn er gestoppt wurde. Die einfachste Lösung, die ich dachte, war, den folgenden Befehl alle 5 Minuten im Windows-Taskplaner auszuführen:
net start MyServiceName
Dieser Befehl startet den Dienst im Grunde (wenn er gestoppt ist) und hat keine Auswirkung, wenn der Dienst bereits ausgeführt wird.
quelle
Ich habe kürzlich eine Wiederherstellungsoption implementiert, um ein Powershell-Skript auszuführen, das versucht, den Dienst eine definierte Anzahl von Malen neu zu starten und zum Abschluss eine E-Mail-Benachrichtigung sendet.
Nach mehreren Versuchen (und trotz all der anderen Dinge, die ich gesehen habe) ist die Konfiguration der Felder auf der Registerkarte Wiederherstellung in Diensten wie folgt:
Programm: Powershell.exe
** Nicht C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe
Befehlszeilenparameter: -command "& {SomePath \ YourScript.ps1 '$ args [0]' '$ args [1]' '$ args [n]'}"
Beispiel: -Befehl "& {C: \ PowershellScripts \ ServicesRecovery.ps1 'Dienstname'}"
** Die $ args sind Parameter, die an Ihr Skript übergeben werden. Diese sind nicht erforderlich.
Hier ist das Powershell-Skript:
quelle
Dies war meine Antwort auf einen ähnlichen Thread Hoffe, das hilft ...
Sie können ein einfaches vbs-Skript wie dieses planen, um den Dienst auf dem Computer bei Bedarf regelmäßig neu zu starten.
quelle
Bei Super User stellte jemand eine ähnliche Frage: Sie könnten ein Tool installieren, das Windows-Dienste überwacht. So etwas wie Service Hawk würde Ihnen helfen, die Dienste am Laufen zu halten, oder es Ihnen ermöglichen, automatische Neustarts (möglicherweise während der Nacht) zu planen, damit der Dienst reibungslos läuft.
quelle