Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Prozess im Taskmanager überprüfen

Frage Entwicklung Batch & Shell

Mitglied: xm-bit

xm-bit (Level 2) - Jetzt verbinden

21.04.2009, aktualisiert 23.04.2009, 10793 Aufrufe, 13 Kommentare

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...

Mit freundlichen Grüßen
Sascha
Mitglied: over23
21.04.2009 um 13:35 Uhr
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.
Bitte warten ..
Mitglied: xm-bit
21.04.2009 um 14:57 Uhr
Hi, danke dir für deine schnelle Antwort.

Aber mit der Powershell, habe ich mich noch nicht so intensiv beschäftigt.
Gensauso wie mit schleifen.
Die Funktionsweise einer schleife verstehe ich ja. Aber das umsetzen, da hapert es bei mir.

Theoretisch soll es so aussehen:

Prüfen ob eine Datei namens xy.exe gestartet ist und käuft.

Wenn nicht, dann starte datei xy.exe
schreibe den start der Datei mit einem Zeitstempel in eine Log-Datei.

Läuft diese Datei schon, mache nix und beende das Programm.

Edit:
mittlerweile habe ich es soweit wie hier:
pc = "localhost"

Set wmi = GetObject("winmgmts:\\" & pc & "\root\cimv2:Win32_Process")

returncode = wmi.Create("calc.exe", Null, Null, ProcessID)
MsgBox "Returncode: " & returncode & " Prozess-ID: " & ProcessID

Aber das startet mir nur die Datei. Wie baue ich dort eine if Anweisung ein, das wenn diese datei gestartet ist. Das nix passiert...


Mit freundlichen Grüßen
Sascha
Bitte warten ..
Mitglied: over23
21.04.2009 um 20:11 Uhr
Hallo,

ich hätte es so gelöst

01.
$liste = ps 
02.
If ($liste -match "xy") { 
03.
  $prozess = Get-Process xy 
04.
  If ($prozess.Responding -match "False") { 
05.
    Stop-Process -name "xy" 
06.
    C:\Pfad\xy.exe 
07.
    Date >>C:\Irgendwo\log.txt 
08.
09.
10.
else { 
11.
C:\Pfad\xy.exe 
12.
}
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.
Bitte warten ..
Mitglied: xm-bit
21.04.2009 um 20:57 Uhr
Hi Over23,


danke schön.

Dann werd ich das morgen früh gleich mal testen.
Ich meld mich dann, wie es ausgegangen ist.

Mit freundlichen Grüßen
Sascha
Bitte warten ..
Mitglied: xm-bit
22.04.2009 um 10:11 Uhr
Moin moin over23,

das sieht soweit schon mal ganz gut aus. Aber ich bekomme keinerlei Einträge in die Log-Datei. Hab alles so umgesetzt wie du es beschrieben hast.

Woran kann es denn liegen???

Mit freundlichen Grüßen
Sascha
Bitte warten ..
Mitglied: over23
22.04.2009 um 10:39 Uhr
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.
Bitte warten ..
Mitglied: xm-bit
22.04.2009 um 10:51 Uhr
Hi over23,

danke.
Momentan schreibt er ja nichts ins Logfile. Nur es läßt sich ein aufgehangener Prozess schlecht simulieren.

Wie kann ich in Powershell denn Text mit übergeben, bin gerade dabei das heruaszufinden. Ist nicht gerade einfach.

Aber mit den richtigen Hilfen, sollte das schon klappen.
Dann warte ich mal bis du im Büro bist.

Mit freundlichen Grüßen
Sascha
Bitte warten ..
Mitglied: over23
22.04.2009 um 13:12 Uhr
So, hier bin ich nochmal

01.
$liste = ps 
02.
$date = date 
03.
$ok = "Alles in Ordnung" 
04.
$gestartet = "Prozess gestartet" 
05.
$neu_gestartet = "Prozess neu gestartet" 
06.
If ($liste -match "xy") { 
07.
  $prozess = Get-Process xy 
08.
  If ($prozess.Responding -match "False") { 
09.
    Stop-Process -name "xy" 
10.
    C:\Pfad\xy.exe 
11.
    "$date | $neu_gestartet" >>C:\Irgendwo\log.txt 
12.
13.
  else { 
14.
  "$date | $ok" >>C:\Irgendwo\log.txt 
15.
16.
17.
else { 
18.
C:\Pfad\xy.exe 
19.
"$date | $gestartet" >>C:\Irgendwo\log.txt 
20.
}
Probiers mal so
Bitte warten ..
Mitglied: xm-bit
22.04.2009 um 13:37 Uhr
Hi over23,

das sieht schon besser aus. Aber wenn sich die Datei aufgehängt hat, wird es nicht gemeldet.
Besteht jetzt die Möglichkeit, die Datei zu überprüfen, ob diese läuft??

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.

Ich schaue mir gerade mit Get-Process an, wie man überprüfen kann, das die Datei am laufen ist, nun suche ich nen Wert der sich ändert, damit ich sehe das ich nen Wert finde der sich verändert...

Mit freundlichen Grüßen
Sascha
Bitte warten ..
Mitglied: over23
22.04.2009 um 13:50 Uhr
Ich verstehe glaube ich nicht, was du willst.

01.
 If ($prozess.Responding -match "False") {  
02.
    Stop-Process -name "xy"  
03.
    C:\Pfad\xy.exe  
04.
    "$date | $neu_gestartet" >>C:\Irgendwo\log.txt  
05.
  } 
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.

??
Bitte warten ..
Mitglied: xm-bit
22.04.2009 um 14:04 Uhr
Hi over23,

wie wird denn überprüft ob diese Datei reagiert???
Ich habe das gerade noch einmal getestet.

Ich habe eine Datei die Fehlerhaft ist, es kommt ein Fenster "xy.exe hat ein Problem festgestellt und muss beendet werden".
Solange dieses Fenster da ist, wird die Datei nicht neu gestartet.

Gibt es eine andere Art die Datei "abzuschießen"??

Über den Taskmanager kann ich es beenden. Aber mit dem Script schaffe ich es nicht.

Ich hofe ich habe mich verständlich ausgedrückt...

Mit freundlichen Grüßen
Sascha
Bitte warten ..
Mitglied: Mikefield
22.04.2009 um 22:55 Uhr
Bekommst Du einen Eintrag im Eventlog?

mf
Bitte warten ..
Mitglied: xm-bit
23.04.2009 um 12:52 Uhr
Hi Mikefield,

ja ich bekopmme einen Eintrag im Event-Log..

Mit freundlichen Grüßen

Sascha
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Entwicklung
gelöst Dateiname auf bestimme Zeichenfolge überprüfen? (8)

Frage von matzetto zum Thema Entwicklung ...

Monitoring
Prozess oder Dienst Überwachung mit Nagios? (5)

Frage von harald.schmidt zum Thema Monitoring ...

Batch & Shell
gelöst Von Batchdatei ausgeführten Prozess benennen (12)

Frage von itazubii zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...