Batch zur Dienstüberwachung
Hallo
ich habe folgendes Problem:
Bei uns stürtzt regelmäßig auf einem Server die Druckerwarteschlange ab. Nun wollte ich mittels Batchdatei diesen Dienst überwachen und gegebenenfalls neu starten.
Ich habe auch schonmal folgende Batch geschrieben:
@echo off
:start
wmic service where "Name='spooler'" get status>%variable%
if %variable%!='Status OK'
(
net start spooler
)
ping localhost -n 10>nul
goto start
leider funktioniert diese Batch nicht. Könnt ihr mir bitte helfen?
Houben
ich habe folgendes Problem:
Bei uns stürtzt regelmäßig auf einem Server die Druckerwarteschlange ab. Nun wollte ich mittels Batchdatei diesen Dienst überwachen und gegebenenfalls neu starten.
Ich habe auch schonmal folgende Batch geschrieben:
@echo off
:start
wmic service where "Name='spooler'" get status>%variable%
if %variable%!='Status OK'
(
net start spooler
)
ping localhost -n 10>nul
goto start
leider funktioniert diese Batch nicht. Könnt ihr mir bitte helfen?
Houben
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138387
Url: https://administrator.de/contentid/138387
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Houben,
Probier mal was in der Richtung:
So könnte das bei dir eventuell auch funktionieren. Ich überwache damit eine Software die sich dann
(falls der Prozess nicht mehr gefunden wird) neu startet.
Dazu muß der Batch aber auf dem betreffenden PC laufen und nicht auf irgendeinem Client.
Gruß Chainsaw
Probier mal was in der Richtung:
:start
tasklist | %systemroot%\system32\find /I "deinProzess.exe" 1>NUL: 2>NUL: && goto WARTE
start deinProzess.exe
sleep 10
:WARTE
sleep 10
goto start
So könnte das bei dir eventuell auch funktionieren. Ich überwache damit eine Software die sich dann
(falls der Prozess nicht mehr gefunden wird) neu startet.
Dazu muß der Batch aber auf dem betreffenden PC laufen und nicht auf irgendeinem Client.
Gruß Chainsaw
Moin,
@ Roger - sehe ich auch so.
@ Chainsaw - das ist aber der falsche Weg....
Find ist - sollte sich in %systemroot%\system32\ befinden - aber - dieser Pfad ist im Pfad - von daher ist ein Find auch ohne den Pfad zu nennen, in dem die Find.exe liegt - auch zielführend.
Und Last but not least:
Einen Dienst startet man nicht per start, sondern per net start, was fast das gleiche ist wie Java und Javascript.
Also wenn schon mit einer Batch - eher
Gruß
@ Roger - sehe ich auch so.
@ Chainsaw - das ist aber der falsche Weg....
Find ist - sollte sich in %systemroot%\system32\ befinden - aber - dieser Pfad ist im Pfad - von daher ist ein Find auch ohne den Pfad zu nennen, in dem die Find.exe liegt - auch zielführend.
Und Last but not least:
Einen Dienst startet man nicht per start, sondern per net start, was fast das gleiche ist wie Java und Javascript.
Also wenn schon mit einer Batch - eher
net start |find "dienst" && goto eof ||net start dienst
Gruß
?
mit Tasklist sieht man alles, aber keine gestarteten Dienste.
Von daher ist der Ansatz mit
denn start ist nicht net start und unabhängig davon - start will als ersten Parameter eine Beschreibung haben.
Und um den Bock in deinem eigenen Ansatz auch loszuwerden.
Du pipest die Ausgabe von
Dann doch lieber so:
mit Tasklist sieht man alles, aber keine gestarteten Dienste.
Von daher ist der Ansatz mit
tasklist | find /I "spooler"
genauso "falsch", wiestart deinProzess.exe
denn start ist nicht net start und unabhängig davon - start will als ersten Parameter eine Beschreibung haben.
Und um den Bock in deinem eigenen Ansatz auch loszuwerden.
Du pipest die Ausgabe von
wmic service where "Name='spooler'" get status>%variable%
in eine "%variable%" und fragst dann "diese" nicht definierte "Datei" abif %variable%!='Status OK'
Also Äpfel Birnen und Hackschnitzel in einen Komposthaufen geworfenDann doch lieber so:
Und aus gutem Grund hab ich dir das als Einzeiliges Scriptschnippselchen gegeben und nicht als Ressourcenfressenden Dauerläufer.
Einmal alle 15 minuten per schtasks sollte reichen. Besser wäre es jedoch der Ursache auf den Grund zu gehen.
Gruß
edit
"das" nur deshalb, weil Frank alle gelösten Threads in Benutzer.de erscheinen läßt und der "angebliche" Hint der Hints ein Griff in die falsche Schüssel ist.