Prozess im Taskmanager überprüfen
Ich möchte einen Prozess im Taskmanager überprüfen ob dieser läuft.
Wenn er nicht läuft, dann soll dieser gestartet werden, und das Ergebnis des Neustarts in einer Log-Datei abgelegt werden.
Hi,
wir haben bei uns einen Prozess, der in regelmäßigen Abständen überprüft werden solll, ob dieser auch richtig läuft.
Wenn sich dieser Prozess aufgehängt haben sollte, soll er neu gestartet werden.
Dieser Neustart soll dann in einer Log-Datei gespeichert werden.
Das ganze würde ich gerne per windows scripting realisieren wollen.
Als einfache Lösung habe ich schon eine Batchdatei mit findstr.
Find ich aber nicht so schön...
Aber ich würde das gerne per wsh lösen. Da aber meine WSH Kenntnisse sich gerade mal bei Grundkenntnissen bewegen, wollte ich euch mal fragen, ob ihr mir da ein wenig unter die Arme greifen könnt.
Das wäre echt klasse...
mfg
Sascha
Wenn er nicht läuft, dann soll dieser gestartet werden, und das Ergebnis des Neustarts in einer Log-Datei abgelegt werden.
Hi,
wir haben bei uns einen Prozess, der in regelmäßigen Abständen überprüft werden solll, ob dieser auch richtig läuft.
Wenn sich dieser Prozess aufgehängt haben sollte, soll er neu gestartet werden.
Dieser Neustart soll dann in einer Log-Datei gespeichert werden.
Das ganze würde ich gerne per windows scripting realisieren wollen.
Als einfache Lösung habe ich schon eine Batchdatei mit findstr.
Find ich aber nicht so schön...
Aber ich würde das gerne per wsh lösen. Da aber meine WSH Kenntnisse sich gerade mal bei Grundkenntnissen bewegen, wollte ich euch mal fragen, ob ihr mir da ein wenig unter die Arme greifen könnt.
Das wäre echt klasse...
mfg
Sascha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 114340
Url: https://administrator.de/contentid/114340
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo,
ich würde das mit einem Powershell-Skript lösen.
$prozess = Get-Process Prozessname
Mit $prozess.Responding kann abgefragt werden, ob der Prozess noch reagiert. Es wird true oder false zurückgegeben.
In Kombination mit einer if-Schleife sollte es kein Problem sein, den Prozess gegebenenfalls neu zu starten.
ich würde das mit einem Powershell-Skript lösen.
$prozess = Get-Process Prozessname
Mit $prozess.Responding kann abgefragt werden, ob der Prozess noch reagiert. Es wird true oder false zurückgegeben.
In Kombination mit einer if-Schleife sollte es kein Problem sein, den Prozess gegebenenfalls neu zu starten.
Hallo,
ich hätte es so gelöst
xy durch den Prozessnamen und C:\Pfad bzw. C:\Irgendwo durch den entsprechenden Pfad ersetzen
Die erste If-Schleife prüft, ob Prozess xy läuft, wenn nein wird er gestartet, wenn ja wird geprüft ob er reagiert.
Wenn er nicht reagiert, wird er beendet, neu gestartet und das Datum in die log.txt geschrieben.
ich hätte es so gelöst
$liste = ps
If ($liste -match "xy") {
$prozess = Get-Process xy
If ($prozess.Responding -match "False") {
Stop-Process -name "xy"
C:\Pfad\xy.exe
Date >>C:\Irgendwo\log.txt
}
}
else {
C:\Pfad\xy.exe
}
xy durch den Prozessnamen und C:\Pfad bzw. C:\Irgendwo durch den entsprechenden Pfad ersetzen
Die erste If-Schleife prüft, ob Prozess xy läuft, wenn nein wird er gestartet, wenn ja wird geprüft ob er reagiert.
Wenn er nicht reagiert, wird er beendet, neu gestartet und das Datum in die log.txt geschrieben.
Guten Morgen Sascha,
momentan schreibt er ja nur in die Log-Datei, wenn sich der Prozess aufgehängt hat und ihn dann neu startet. Wenn der Prozess nicht vorhanden ist und "nur" gestartet wird, gibt es keinen Eintrag.
Solltest du das getestet haben und es trotzdem nicht funktionieren, poste ich dir nacher nochmal was, wenn ich im Büro bin.
momentan schreibt er ja nur in die Log-Datei, wenn sich der Prozess aufgehängt hat und ihn dann neu startet. Wenn der Prozess nicht vorhanden ist und "nur" gestartet wird, gibt es keinen Eintrag.
Solltest du das getestet haben und es trotzdem nicht funktionieren, poste ich dir nacher nochmal was, wenn ich im Büro bin.
So, hier bin ich nochmal
Probiers mal so
$liste = ps
$date = date
$ok = "Alles in Ordnung"
$gestartet = "Prozess gestartet"
$neu_gestartet = "Prozess neu gestartet"
If ($liste -match "xy") {
$prozess = Get-Process xy
If ($prozess.Responding -match "False") {
Stop-Process -name "xy"
C:\Pfad\xy.exe
"$date | $neu_gestartet" >>C:\Irgendwo\log.txt
}
else {
"$date | $ok" >>C:\Irgendwo\log.txt
}
}
else {
C:\Pfad\xy.exe
"$date | $gestartet" >>C:\Irgendwo\log.txt
}
Probiers mal so
Ich verstehe glaube ich nicht, was du willst.
prüft, ob der Prozess reagiert, wenn nicht wird er beendet, neu gestartet und ein Eintrag in den Log gemacht.
Was meinst du mit:
??
If ($prozess.Responding -match "False") {
Stop-Process -name "xy"
C:\Pfad\xy.exe
"$date | $neu_gestartet" >>C:\Irgendwo\log.txt
}
prüft, ob der Prozess reagiert, wenn nicht wird er beendet, neu gestartet und ein Eintrag in den Log gemacht.
Was meinst du mit:
Zitat von @xm-bit:
Denn momentan wird nur der Wert, das die Datei im Taskmanager
aufgeführt ist, überprüft. Da sieht man ja keinerlei
Veränderung. Wenn sich die Datei nun aufgehangen hat, wird es
nicht erkannt.
Denn momentan wird nur der Wert, das die Datei im Taskmanager
aufgeführt ist, überprüft. Da sieht man ja keinerlei
Veränderung. Wenn sich die Datei nun aufgehangen hat, wird es
nicht erkannt.
??